목록알고리즘 (72)
짱이 될거야

N, K = map(int, input().split()) arr = [i for i in range(1, N+1)] result = [] num = 0 for _ in range(N): num += (K-1) num %= len(arr) result.append(str(arr.pop(num))) print("", sep=" ")

https://www.acmicpc.net/problem/20920 20920번: 영단어 암기는 괴로워 첫째 줄에는 영어 지문에 나오는 단어의 개수 $N$과 외울 단어의 길이 기준이 되는 $M$이 공백으로 구분되어 주어진다. ($1 \leq N \leq 100\,000$, $1 \leq M \leq 10$) 둘째 줄부터 $N+1$번째 줄까지 외울 단 www.acmicpc.net import sys input = sys.stdin.readline N, M = map(int, input().split()) # N: 단어 개수, M: 길이 기준 words = {} # result = {'apple': [5, 1, 'apple'],} for i in range(N): word = input().strip() i..

from collections import deque def bfs(v): q = deque([v]) visited[v] = 1 while q: v = q.popleft() if v == G: return count[G] for w in (v+U, v-D): if 0 < w

이번 문제는 3차원으로 생각해야 해서 처음 접근하기가 어려웠는데 기존 4방향 탐색에서 6방향 탐색으로 바꿔주기만 하면 됐다. 처음에는 기존 하던 방식대로 for문을 돌려 토마토가 1일 때마다 bfs를 실행했는데, 그렇게 하면 런타임에러가 난다. 따라서 처음 상태가 1(익은 상태)이었던 토마토들을 미리 queue에 넣고, 그 queue에 대해서 한 번만 bfs를 해야 했다. from collections import deque import sys input = sys.stdin.readline def bfs(): while q: sh, si, sj = q.popleft() for dh, di, dj in [(-1, 0, 0), (1, 0, 0), (0, -1, 0), (0, 1, 0), (0, 0, -1)..

https://www.acmicpc.net/problem/3009 3009번: 네 번째 점 세 점이 주어졌을 때, 축에 평행한 직사각형을 만들기 위해서 필요한 네 번째 점을 찾는 프로그램을 작성하시오. www.acmicpc.net x_dots = [] y_dots = [] for i in range(3): x, y = map(int, input().split()) x_dots.append(x) y_dots.append(y) for i in range(3): if x_dots.count(x_dots[i]) == 1: print(x_dots[i], end=' ') for i in range(3): if y_dots.count(y_dots[i]) == 1: print(y_dots[i])

https://www.acmicpc.net/problem/25501 25501번: 재귀의 귀재 각 테스트케이스마다, isPalindrome 함수의 반환값과 recursion 함수의 호출 횟수를 한 줄에 공백으로 구분하여 출력한다. www.acmicpc.net def isPalindrome(s): return recursion(s, 0, len(s)-1) def recursion(s, l, r): # s: 문자열, l: 시작, r: 끝 global count count += 1 if l >= r: return 1 elif s[l] != s[r]: return 0 else: return recursion(s, l+1, r-1) T = int(input()) # 테스트케이스의 수 for _ in range(T..