📖 문제 https://www.acmicpc.net/problem/20364 💡 풀이 방식• 트리필요 자료구조- 점유된 땅의 수 저장하는 int형 배열- 점유되었는지 상태를 표시할 boolean형 배열 1. 땅 개수 N과 오리 수 Q를 입력받는다.2. i번째 오리가 원하는 땅 번호를 입력받는다.3. 2에서 입력받은 오리가 원하는 땅 번호를 갈 수 있는지 확인해 출력한다. - 원하는 땅에서 1까지 거슬러 올라오며(/2) 점유된 상태인지 확인한다. ㄴ 점유된 상태인 경우, 점유된 땅의 번호를 정답으로 출력한다. ㄴ 정답이 초기값 0에서 바뀌지 않은 경우, 해당 번호의 땅을 점유 처리한다. 🔺 코드1234567891011121314151617181920212223242526272..
📖 문제 https://www.acmicpc.net/problem/16960 💡 풀이 방식• 구현필요 자료구조- 램프 갯수 저장용, 크기가 M+1인 int형 배열- 램프 정보 저장 리스트 배열 1. 각 스위치에 몰린 램프 정보를 저장한다.for(int i = 1 ; i 0) { int tmp = Integer.parseInt(st.nextToken()); list[i].add(tmp); arr[tmp]++; }} 2. 스위치 수만큼 반복문을 돌면서, 각각의 스위치에 몰린 램프의 idx 값을 배열에서 하나씩 빼본다.그러면서 유지가 되는지/아닌지 flag 변수로 판단한다.boolean flag = true; // 하나씩 빼면서 유지되는지 ..
📖 문제 https://www.acmicpc.net/problem/3029 💡 풀이 방식• 문자열1. 첫째 줄에 입력받은 현재 시간을 세미콜론(:) 단위로 분리한다.2. 둘째 줄에 입력받은 나트륨 던질 시간을 세미콜론(:) 단위로 분리한다.3. 둘째 줄에서 입력받은 (시간-분-초)를 첫째 줄에서 입력받은 (시간-분-초)로 빼는 연산을 수행한다.4. 연산 후, 정인이가 기다려야 하는 시간을 출력해야 할 때 시간/분/초 중 한 자리 수의 경우, 앞에 0을 붙여 출력하도록 한다. (두 자릿수면 그냥 출력한다.) 💥 유의사항정인이는 적어도 1초를 기다린다고 했으므로,1과 2에서 입력받은 시간이 같은 경우, 24:00:00이 나오도록 처리해 줘야 한다. 🔺 코드123456789101112131..
📖 문제 https://www.acmicpc.net/problem/2668 💡 풀이 방식• DFS1. 위쪽 줄의 숫자들을 출발지로, 아랫 줄의 숫자들을 도착지로 한 그래프를 생성한다.2. 그래프 내에서 생성된 사이클을 찾고, 사이클을 만드는 숫자를 리스트에 넣고 오름차순 정렬해 출력한다. - 사이클 발생 여부 확인 : [DFS] 출발 숫자 > arr[출발 숫자] > arr[arr[출발 숫자]] - 탐색하다가 출발 숫자를 다시 만나면 사이클 하나가 완성된 거고, 이 값을 리스트에 넣는다. 🔺 코드1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950import java.util...
📖 문제 https://www.acmicpc.net/problem/20125 💡 풀이 방식• 구현- 심장 : 본인의 위치 포함 본인을 둘러싼 상하좌우가 모두 쿠키(*)일 때 심장이다.- 허리 : 심장 위치를 기준으로 아래쪽(행 방향+1)으로 계속 쿠키인 부분- 왼팔 : 심장부터 왼쪽(열-1)으로 뻗어나간 부분- 오른팔 : 심장부터 오른쪽(열+1)으로 뻗어나간 부분- 왼다리 : 허리 왼쪽 아래쪽부터 아래쪽(행+1)으로 뻗어나간 부분- 오른다리 : 허리 오른쪽 아래쪽부터 아래쪽(행+1)으로 뻗어나간 부분 🔺 코드123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555..
📖 문제 https://www.acmicpc.net/problem/10431 💡 풀이 방식• 시뮬레이션1. TC 번호와 20개의 숫자를 입력받는다.2. 각 학생들에 대해 본인 앞에 있는 본인보다 키 큰 사람 수를 구한다. ⇒ 시간 복잡도 : O(TC * N^2) 🔺 코드123456789101112131415161718192021222324252627282930313233343536import java.util.*;import java.io.*; public class Main { static int T, P; public static void main(String[] args) throws IOException { BufferedReader br = new Buf..
📖 문제 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 💡 풀이 방식• 브루트포스 두 직선의 교점 과표를 구해 2차원 배열에 표시한다.이 때 문제에서 제시한 공식을 활용한다! 💥 유의사항- A,B,C는 long 타입으로 풀기 (-10만 이상, 10만 이하의 정수이므로) 🔺 코드123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869import java.util.*..
📖 문제 https://www.acmicpc.net/problem/1240 💡 풀이 방식• BFS 1. 인접 리스트를 만들고 N-1개의 연결 정보를 양방향으로 저장한다.2. M개의 노드 쌍에 대해 첫 번째 노드부터 두 번째 노드까지의 거리를 구한다. (BFS) 🔺 코드12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576import java.util.*;import java.io.*; public class Main { static int N,M; static ListNode>[..
📖 문제 https://www.acmicpc.net/problem/18429 💡 풀이 방식• DFS (조합)백트래킹으로 운동 키트 번호를 뽑는다. (중복 X)뽑은 운동 키트를 순서대로 돌면서, 중량이 모두 500 이상인 경우만 정답 +1을 한다. 🔺 코드1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556import java.util.*;import java.io.*; public class Main { static int N,K,answer; static int[] arr; static boolean[] chk; static ListInt..