백준 17419 비트가 넘쳐흘러 풀이 (feat. JAVA)
·
CS & Algorithm/Algorithm
비트... 연산... 어렵다잉?2진수를 이렇게 또 다시 마주할 줄이야package Record_2025;/*[백준][문제파악]DJ욱제는 비트에 심취한 나머지, 비트를 비틀어 제껴버리는 문제를 내 버렸다!N자리 이진수 K가 주어진다.K가 0이 아닐 때까지 아래의 연산을 적용했을 때, 연산이 일어나는 횟수를 구하시오.K = K-(K&((~K)+1))아래는 위의 연산에 사용된 연산자에 대한 설명이다.'+'는 산술 더하기 연산이다. (5 + 2 = 7)'-'는 산술 빼기 연산이다. (5 - 2 = 3)'&'는 비트 AND 연산이다. (1101 & 0111 = 0101)'~'는 비트 NOT 연산이다. 켜진 비트를 끄고, 꺼진 비트를 켜는 연산이다. (~1101 = 0010)[입력]첫째 줄에 N이 주어진다.둘째 줄..
백준 2885 초콜릿 식사 풀이 (feat. JAVA)
·
CS & Algorithm/Algorithm
비트마스킹 친해지기 어렵다...어떻게 써먹어야할지 쓰면서도 헷갈림더 자주 풀어서 더 친해져야지 뭐 ㅠpackage Record_2025;/*[백준]2885, 초콜릿 식사[문제파악]- 학교 근처 편의점에 새 초콜릿이 들어왔다.- 이 초콜릿은 막대 모양이고, 각 막대는 정사각형 N개로 이루어져 있다.- 초콜릿의 크기(정사각형의 개수)는 항상 2의 제곱 형태이다.- 즉, 1, 2, 4, 8, 16, ...개의 정사각형으로 이루어져 있다.- 상근이는 점심식사로 초콜릿을 먹는다.- 이때, 적어도 K개 정사각형을 먹어야 남은 수업을 졸지 않고 버틸 수 있다.- 상근이의 친구 선영이도 초콜릿을 좋아한다.- 선영이는 초콜릿은 돈을 주고 사기 아깝다고 생각하기 때문에, 상근이가 주는 초콜릿만 먹는다.- 상근이는 막대 초..
백준 17182 우주 탐사선 풀이 (feat. JAVA)
·
CS & Algorithm/Algorithm
어렵다...언제쯤 골드 문제들은 답 참고 안하고 슈슈슉 다 풀어버릴 수 있을지요즘은 비트마스킹 문제에 익숙해지고자 이것만 풀고 있는데 쉽지 않다원리만 이해하고 문제에 적용하기 어려운게 확실히 알고리즘은 수학 문제 푸는 것과 똑같은 것 같다계속 풀면 언젠간 되긴 하긴하더만 ㅇㅅㅇ.. 아무튼 오늘은 비트마스킹 문제긴한데 여러가지를 다 조합해서 써야하는 문제다플로이드-워셜 + DFS + 비트마스킹 조합임...이 극악무도한 것...package Record_2025;/*[백준]17182, 우주 탐사선[문제파악]- 우주 탐사선 ana호는 어떤 행성계를 탐사하기 위해 발사된다.- 모든 행성을 탐사하는데 걸리는 최소 시간을 계산하려 한다.- 입력으로는 ana호가 탐색할 행성의 개수와 ana호가 발사되는 행성의 위치와..
백준 2014 소수의 곱 풀이 (feat. JAVA & C#)
·
CS & Algorithm/Algorithm
골드 상위권 문제는 늘 이런 식이다...쉬운듯 하면서 함정을 파놓지이 문제는 PQ문제다근데 곱셈의 중복처리를 해줘야하니까? HashSet도 필요하고...2 x 3과 3 x 2는 같으니까? 미리 가지치기(예외처리)도 필요한...그런 몹쓸 문제 되시겠다 아래는 내가 제일 헷갈렸던 포인트를 줄줄줄 설명하듯 적어놨음더보기이게 뭐냐고! 대체 뭐냐고!! // 중복 제거: 오름차순 생성만 허용if (curr % nums[j] == 0) break;뭘까 진짜... 수십번을 생각했더랬다근데 도저히 모르겠음이 날은 도저히 모르겠음을 인정하고 하루 방치해뒀다실제로 더 이상 머리가 굴러가지 않는 문제는?하루를 냅두고 숙성시켰다가 다음날 꺼내보면 무의식이 이해를 해두는 경우도 종종 있다- 의사쌤 유튭채널 오피셜 말씀이었음 아무..
백준 1976 여행 가자 풀이 (feat. JAVA)
·
CS & Algorithm/Algorithm
Union-Find 문제예전에, 1년 전? 이 유형에서 도망가서 그 때 실패했던 문제 오늘 다시 도전했다근데 Union-Find 그 때 공부 안해서 여전히 못 풀더라 ㅋㅋ ㅠ이제는? 도망갈 곳이 없다~대충 방식은 이해했다서로 연결된 친구들은 root에 해당하는 노드를 하나 만든다그리고 서로 연결되어있다 치면, 같은 그룹이다 아니다를 빠르게 체크하기 위해 root(대표 노드) 하나로 모두 연결시킨다그리고 서로 같은 그룹에 있는지를 체크하면 되는 문제!말로는 쉽다 말로는... 이것도 꾸준히 복습하면서 Union-Find를 내 것으로 만들어야 할 듯 ㅠ 구현방법- 연결된 노드들은 같은 그룹으로 묶인다. - 각 노드는 하나의 대표 노드(루트)를 가리킨다. - 두 노드가 연결되어 있는지 빠르게 판단하려면 각 노드..
백준 12919 A와 B 2 풀이 (feat. JAVA)
·
CS & Algorithm/Algorithm
StringBulider의 compareTos는 JAVA 9에서부터 만들어졌다는 것조건 순서를 의심해보면 그리디로 풀 수 없었다는 것두가지를 간과했던 문제package Record_2025;/*[백준]12919, A와 B 2[문제파악]- 수빈이는 A와 B로만 이루어진 영어 단어 존재한다는 사실에 놀랐다.- 대표적인 예로 AB (Abdominal의 약자), BAA (양의 울음 소리), AA (용암의 종류), ABBA (스웨덴 팝 그룹)이 있다.- 이런 사실에 놀란 수빈이는 간단한 게임을 만들기로 했다.- 두 문자열 S와 T가 주어졌을 때, S를 T로 바꾸는 게임이다.- 문자열을 바꿀 때는 다음과 같은 두 가지 연산만 가능하다.- 문자열의 뒤에 A를 추가한다.- 문자열의 뒤에 B를 추가하고 문자열을 뒤집는다..
백준 1701 Cubeditor 풀이 (feat. JAVA / 돔황챠)
·
CS & Algorithm/Algorithm
과거의 나는 보아라그래 백번 양보해서 알고리즘 분류 KMP를 보고 '이건 뭐지' 싶어서 도망 안 갔을 수는 있다그래도 KMP 타고 들어가서 문제 난이도 봤을 땐 도망갔었어야지...(여러분도 그때 도망 못 가셨으니까 여기까지 오셨겠죠? ㅋㅋㅋㅋ 하 ㅠㅠ) 너무 어려웠다이건 답을 다봤다봐도 모르겠다심지어 0.5초? 양심있냐? 이걸 코테로 내는 곳은 없겠지이정도 알고리즘은 앞으로 AI가 짜주지 않을까?진짜 뭐하는 알고리즘인지 모르겠다진짜 이걸 내가 나중에 다시 풀까..? 싶긴 하지만 너무 어려웠으니까 공부 차원에서 포스팅해둔다..(코드를 다시봐도 뭐라는거야 싶네..)코드package Record_2025;/*[백준]1701, Cubeditor[문제파악]- Cubelover는 프로그래밍 언어 Whitespace..
백준 1135 뉴스 전하기 풀이 (feat. JAVA)
·
CS & Algorithm/Algorithm
트리에서도 DP가 가능하다니 악랄하다!!! 이거 놓쳤던 부분이자 가장 큰 포인트가 하나 있다전화를 한번에 한명 밖에 못 걸어서, 부하가 가장 많은 직원한테 먼저 걸어야 한다는 것! 즉 이 문제의 요는 루트 노드에서 시작하지만 DFS로 탐색해 들어가면 리프 노드에서 시작하는 셈이다그러면 밑바닥에 있는 가장 마지막 노드들(리프 노드)는 걸린시간이 0이다그러면 이제 리프 노드의 부모 입장에서 자식들이 몇명인지, 한번씩 전화를 돌리면 몇 분이 걸리는지를 체크한다이런 식으로 Bottom-Up으로 탐색해가면 루트 입장에선 각 자식들이 몇 분씩 걸리는지 알 수 있다 다만 여기서 한가지 함정이 있다면 그것은 가장 오래 걸리는 자식부터 계산을 해주어야한다는 것이다전화는 한번에 한명밖에 걸 수 없으니 자식이 많은 가지부터..
백준 14426 접두사 찾기 풀이 (feat. JAVA)
·
CS & Algorithm/Algorithm
아... Trie 진짜 저번에도 쓴맛을 봤었던 친구다이거는 그냥 원리는 단순하다 단어가 있으면 철자별로 분리해서 트리 구조로 만드는 것이다근데 이제 구현하는 방식이 효율적으로 정해져있는 그런 친구이다원리는 이해했으니까 이런 것은 구조는 암기하는게 속편하다..요 며칠간 잊을만하면 다시 써보고 보면서 외워봅시다... (망각곡선 OMG)package Record_2025;/*[백준]14426, 접두사 찾기[문제파악]- 문자열 S의 접두사란 S의 가장 앞에서부터 부분 문자열을 의미한다.- 예를 들어, S = "codeplus"의 접두사는 "code", "co", "codepl", "codeplus"가 있고, "plus", "s", "cude", "crud"는 접두사가 아니다.- 총 N개의 문자열로 이루어진 집..
백준 3079 입국심사 풀이 (feat. JAVA)
·
CS & Algorithm/Algorithm
이것도 너무 어렵게만 생각했다내가 30분 넘게 문제 구현방법에 대해서만 고민했는데, 내가 묶여있던 곳은 비어있는 B심사관을 패스하고, 1초 기다렸다가 A심사관에게 받겠다는 판단 요소를 처리할 방법 지점이었다근데 도저히 모르겠어서 참고했는데, 확인해보니 이것은 고려할 필요 자체가 없었다 그 사유는 그냥 심사대 입장에서, 최대 처리량을 미리 계산해두면 되는 것이다N초 동안 모든 심사대가 최대로 처리할 수 있는 인원 수를 계산해두면, 현재 인풋인 N명을 처리할 수 있는지 어쩐지 결과가 나온다그 최댓값 안에만 들어가면 된다는 소리...그도 그럴 것이 아래와 같은 상황을 생각해보면 된다[3초 걸리는 심사대][6초 걸리는 심사대]있다고 할 때 5명, 9초를 준다면?총 4명을 처리할 수 있다근데 이건 그냥 6초 걸리..