https://school.programmers.co.kr/learn/courses/30/lessons/17687 코드function solution(n, t, m, p) { let answer = ''; let sequence = "" let num = 0; while(sequence.length 1. `sequence`라는 문자열에 0부터 n진법으로 변환한 문자열을 쭉 이어붙인다. 이 동작은 `sequence`의 길이가 `t*m` 이상이 될 때까지 반복한다.2. `sequence`를 m개의 원소를 가진 덩어리들로 나눴을 때, p-1번째(제로 인덱스 기준)에 있는 원소들만 뽑아서 `answer`에 문자열로 저장하면 된다. 그걸 코드로 구현하면 11~14번째 줄과 같다.여기서 5~9..
문제풀이/완전탐색
https://www.acmicpc.net/problem/9763코드import sysinput = sys.stdin.readlineINF = int(1e9)def get_distance(p1, p2): return abs(p1[0]-p2[0])+abs(p1[1]-p2[1])+abs(p1[2]-p2[2])n = int(input())villages = [list(map(int, input().split())) for _ in range(n)]answer = INFfor center in range(n): first = INF second = INF for neighbor in range(n): if center == neighbor: continue ..
https://www.acmicpc.net/problem/2659 코드input_nums = list(map(int, input().split()))def get_clock_num(nums): res = 10000 for start in range(4): num = 0 for i in range(4): num += nums[(start+i) % 4]*(10**(3-i)) res = min(num, res) return resclock_nums = set()for a in range(1, 10): q = [a] for b in range(1, 10): q.append(b) for c in range..
https://www.acmicpc.net/problem/1120코드import sysinput = sys.stdin.readlinea, b = input().split()answer = 50for i in range(len(b)-len(a)+1): cnt = 0 for j in range(len(a)): if a[j] != b[j+i]: cnt += 1 answer = min(answer, cnt)print(answer) b에서 a와 가장 유사도가 높은 부분을 찾은 뒤에 나머지 남은 길이는 b와 같은 글자들로 채워넣으면 a와 b의 차이를 최소로 할 수 있다.예를 들어, 문제의 예제 3인 `koder topcoder`를 예시로 보면 topcoder ..
https://www.acmicpc.net/problem/17968문제 해석문제가 영어로 되어 있어서 정리를 좀 해봤다. 배열 A는 다음과 같은 규칙을 만족하는 수열이다.A[0]=1, A[1]=1이다.어떤 k(k > 0)가 i - 2k ≥ 0이라는 조건을 만족시킬 때, A[i-2k], A[i-k], A[i]로 이루어진 부분수열은 등차수열이 되지 않는다. 즉, A[i]-A[i-k] ≠ A[i-k] - A[i-2k]이다.예를 들어, A[2]는 1이 될 수 없다. 왜냐하면, A[0]=1, A[1]=1이기 때문에 A[2]가 1이면 A[0], A[1], A[2]는 공차가 0인 등차수열이 되기 때문이다. 그렇기에 A[2]는 A[0], A[1], A[2] 부분수열이 등차수열이 되지 않게 하면서도 가장 작은 양의 정수..