목록전체 글 (98)
CodeClover

[문제링크]https://www.acmicpc.net/problem/11866 📌 문제 탐색하기1부터 N까지 사람들이 원형으로 앉아있는 상태에서 K번째 사람을 제거하고 그 다음 K번째 사람을 계속 제거한다. 모든 사람이 제거될 때까지 해당 과정을 반복하면서 제거된 순서를 출력하는 문제이다. 📌 가능한 시간복잡도 각각 요소를 제거할때는 최대 k-1번 이동하고 제거하는 과정을 반복하는 상황이기때문에... 따라서 가능한 시간복잡도는 O(N * K) 입니다. 📌 코드 설계하기1. N과 K의 값을 입력받는다. 원형으로 앉아있는 형태에서 특정 순서의 사람을 제거하는 과정을 진행해야하니까... 큐 사용해서 순열처리하는게 깔끔할거같음. 2. 1~N까지 번호를 큐에 추가한다.3. 순열 계산하기 ( 요세푸스 순열...

[문제링크]https://www.acmicpc.net/problem/2193 📌 문제 탐색하기이친수... 특성을 보면 이전 자리의 숫자에 따라서 다음 자리의 숫자가 결정되기 때문에 문제를 재귀적으로 해결하는 방식을 사용해야하는 문제인거 같다. > 이친수란 ? ( 정리 예정 ) 📌 가능한 시간복잡도 for문이 n번 반복되기 때문에 가능한 시간복잡도는 O(N)입니다. 📌 코드 설계하기DP를 활용해서 해결하는 문제라고 생각함. 이친수에 대해서 공부하는데 시간이 조금 오래걸렸음... 1.입력받기 : N값 입력받고 2. DP사용할거니까 dp[i]으로 i자리 이친수 개수 저장해서 점화식 적용하기3. 출력하기: dp[n]출력해서 n 자리 이친수 개수 구하기 📌 정답 코드import java.util.Sc..

[문제링크]https://www.acmicpc.net/problem/2303 📌 문제 탐색하기모든 사람의 카드 조합중에서 세장을 선택하고 그 합의 일의자리 숫자가 가장 큰 값을 찾는 문제이다.만약, 최대 값이 여러명인 경우는 번호가 가장 큰 사람의 번호를 출력하는 문제이다. 📌 가능한 시간복잡도 각각 사람들은 5장의 카드를 가지고 있고 이중에 3장의 카드를 선택해야하는거니까 조합으로 계산하면 10의 조합을 확인해야한다는거임. 입력받은 사람 N명 - 각각 10번의 계산을 진행해야하는거니까 총 연산은 O(N * 10) 이라고 생각함. 따라서, 가능한 시간복잡도는 O(N * 10)입니다. 📌 코드 설계하기1. 입력하기 : 사람의 수 N 입력받기 입력받은 N명의 사람..

[문제링크]https://www.acmicpc.net/problem/5567 📌 문제 탐색하기 📌 가능한 시간복잡도 📌 코드 설계하기 📌 정답 코드import sysfrom collections import deque# 1. 문제의 input을 인접 그래프 형태로 받습니다.n = int(sys.stdin.readline())m = int(sys.stdin.readline())graph = [[] for _ in range(n+1)]for _ in range(m): a, b = map(int, sys.stdin.readline().split()) graph[a].append(b) graph[b].append(a)# 2. BFS 탐색헤 활용할 방문 배열을 선언합니다.visited ..

[문제 링크]https://www.acmicpc.net/problem/2204📌 문제 탐색하기글자의 대소문자를 구분하지 않고 사전순으로 정렬해서 해당 정렬이 사전순으로 가장 앞에 있는 단어를 출력하는 문제이다.... 즉, 2개의 포인트 ( 대소문자 구분 X , 사전순 가장 앞 순서 출력 ) 를 만족하면 된다. 📌 가능한 시간복잡도 각각 테스트 케이스에서 입력받은 n개의 단어를 처리하니까1. 입력받은 단어 n개를 배열에 저장하는 입력처리 : O(n) 2. n개의 단어를 반복해서 사전순으로 비교를 진행하니까... 각각 단어의 길이값을 k라고 하면 비교처리 : O(n*k) 따라서, 가능한 시간복잡도는 O(n*k)이라고 생각합니다.📌 코드 설계하기1. 단어 개수 입력 받기 n개 2. 입력값이 0이면 ..

[문제링크]https://www.acmicpc.net/problem/2644 📌 문제 탐색하기그래프 문제로 사람들을 노드라고 생각하고 그래프로 표현이 가능하다. ( 양방향 관계 )두 노드 간 최단 경로를 참색하여 촌수를 계산하는 문제이다. 만약에 노드가 연결되어 있지 않은 경우 -1을 출력한다.📌 가능한 시간복잡도 각각 최대 한번씩만 방문하기 때문에 시간복잡도는 O(N)이다.📌 코드 설계하기탐색하는 방법이 DFS인지 BFS인지에 따라서 풀이가 달라지는데,,, 효율적인 문제풀이 방식이 어떤 방식인지 고민됨. BFS 사용해서 문제 풀이 진행visited[] 배열을 만들어서 방문여부를 저장하는 배열 만들기그리고 큐를 사용해서 현재 탐색하고 있는 노드와 촌수를 저장하기. 📌 정답 코드import java..