ALGORITHM
-
코딩테스트 연습> 그래프 > 순위ALGORITHM/Programmers 2021. 3. 9. 18:46
코딩테스트 연습 - 순위 5 [[4, 3], [4, 2], [3, 2], [1, 2], [2, 5]] 2 programmers.co.kr 문제설명: results 배열 안에 A,B 두 선수가 리스트로 담겨있고, A>B 앞에있는 숫자(A)가 뒤에오는 숫자(B)를 이겼다는 의미이다. 예제로 나와있는 results의 경우 [[4, 3], [4, 2], [3, 2], [1, 2], [2, 5]] 이므로, 4 > 3 4 > 2 3 > 2 1 > 2 2> 5 이고 이를 다시 정리해본다면 4 > 3 > 2 4 > 2 > 5 1 > 2 의 구조로 살펴볼 수 있다. 즉 win과 lose 딕셔너리를 생성한 다음 아래와 같은 구조로 값을 저장한다: 1. win에는 나(Key): 나에게 진사람들(Value) 2. lose에는..
-
코딩테스트 연습> 2019 카카오 개발자 겨울 인턴십> 크레인 인형뽑기 게임ALGORITHM/Programmers 2020. 10. 24. 10:04
코딩테스트 연습 - 크레인 인형뽑기 게임 [[0,0,0,0,0],[0,0,1,0,3],[0,2,5,0,1],[4,2,4,4,2],[3,5,1,3,1]] [1,5,3,5,1,2,1,4] 4 programmers.co.kr 문제설명: 인형뽑기 통(?)이 board 배열로 주어지고, 뽑기 기계가 움직이는 방향을 담은 moves 배열이 주어진다. moves 방향에 따라 기계가 이동하면서 인형들을 뽑아 임시 바구니에 차곡차곡 담는다. 이때, 같은 모양의 인형이 2개가 만나면, 터지면서 사라진다. 이 때, 사라지는 인형들의 개수를 모두 더해 최종 ans로 return 하면 된다. [1차 시도] def solution(board, moves): ans = 0 basket = [] for i in moves: i-=1..
-
그리디 알고리즘> 1931. 회의실배정ALGORITHM/BAEKJOON 2020. 9. 23. 23:38
1931번: 회의실배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 문제설명: N개 회의가 주어지고 각각의 시작시간과 종료시간이 주어진다. 한 개의 회의실로 최대한 많은 회의를 할 수 있도록, 회의시간이 겹치지 않게 배정하는 방법을 생각해야 한다. [1차 시도] N = int(input()) timetable = [list(map(int,input().split())) for _ in range(N)] timetable.sort() ans = 1 minV = 2**31 for i in range(len(timetable)): if timetable[i][1] < minV: minV = timetable[i][1] else: if timetable..
-
백트래킹> 15649. N과 M (1)ALGORITHM/BAEKJOON 2020. 9. 21. 19:24
15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 문제설명: 숫자 N과 M이 주어지고, 1부터 N까지의 숫자를 활용하여 M개 길이의 수열을 만들어 출력하면 된다. [1차 시도] def find(cur,cnt): #(2) global N,M #(3) if cnt == M: print(' '.join(cur)) return else: #(4) visited[int(cur[-1])] = 1 for i in range(1, N + 1): #(5) if not visited[i]: visited[i] = 1 #(6) f..
-
브루트 포스> 2231. 분해합ALGORITHM/BAEKJOON 2020. 9. 18. 08:34
2231번: 분해합 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 www.acmicpc.net 문제설명: 숫자 N이 주어지고, 각 자리 수와 해당 값의 합으로 이 N을 만들 수 있는 숫자들 중 가장 작은 숫자를 찾는 문제이다. 만약 이처럼 만들 수 없다면, 0을 출력해야 한다. [1차 시도] N = int(input()) minV = 1000000000 check = N while check>N//2: sumup = 0 num = check while num>0: sumup+=num%10 num //=10 if check+su..
-
그리디 알고리즘> 11047. 동전 0ALGORITHM/BAEKJOON 2020. 9. 17. 09:40
11047번: 동전 0 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) www.acmicpc.net 문제설명: N개 종류의 동전이 주어지고, N개의 종류별 동전들을 적절히 사용해 그 합을 K로 만드는 동전의 최소 개수를 구하는 문제이다. [1차 시도] N, K = map(int,input().split()) coin = [int(input()) for x in range(N)] ans = 0 coin_sum = 0 originK = K for i in range(N-1,-1,-1): if coin[i]
-
브루트 포스> 7568. 덩치ALGORITHM/BAEKJOON 2020. 9. 15. 10:52
7568번: 덩치 우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x,y)로 표시된다. 두 사람 A 와 B의 덩� www.acmicpc.net 문제설명: 각 사람의 몸무게와 키가 주어지고, 서로의 몸무게와 키를 비교하는데 자신보다 몸무게와 키가 모두 큰 사람의 수+1이 자신의 등수가 된다. 이 때 등수의 중복은 허용된다. [1차 시도] N = int(input()) ans = [] people = [] for _ in range(N): weight, height = map(int,input().split()) people.append([weight,height]) for i in peopl..
-
코딩테스트 연습> 2020 카카오 인턴십> 키패드 누르기ALGORITHM/Programmers 2020. 9. 10. 23:43
코딩테스트 연습 - 키패드 누르기 [1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5] "right" "LRLLLRLLRRL" [7, 0, 8, 2, 8, 3, 1, 5, 7, 6, 2] "left" "LRLLRRLLLRR" [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] "right" "LLRLLRLLRL" programmers.co.kr 문제설명: 키패드에 입력할 번호들의 배열 numbers가 주어지고 1,4,7은 왼손으로, 3,6,9는 오른손으로, 그리고 나머지 2,5,8,0은 현재 위치의 왼손과 오른손 중 가까운 거리의 손가락으로 누르면 된다. 만약 거리가 같다면, hand에 주어진 손가락으로 누르면되고, 키패드 번호를 누를때마다, 현재 누른 손가락의 위치를 갱신해주면 된다. [1차..