목록Python (79)
JiSoo's Devlog
n = int(input()) c = n for i in range(n): w = input() for j in range(len(w)-1): if w[j] == w[j+1]: continue elif w[j] in w[j+1:]: c -= 1 break print(c) if문으로 단어 길이에서 1을 뺀 수와 같아지기 전까지 반복 앞단어와 뒤의 단어가 연속해서 같으면 continue 그렇지 않고 그 뒤에 있는 단어들 중 같은 단어가 있다면 break
n = int(input()) l = 1 while n > l: n -= l l += 1 if l % 2 == 0: a = n b = l - n + 1 else: a = l - n + 1 b = n print(a, '/', b, sep='') while문으로 입력받은 n의 위치를 찾기 위해 반복하다가 대각선의 수 l보다 n이 작아지면 해당하는 대각선에 n이 있다는 거니까 탈출 입력받은 수가 14라면 1+2+3+4 < 14 < 1+2+3+4+5 만약 l이 짝수라면 분자는 오름차순, 분모는 내림차순의 결과가 나오도록 하고 홀수라면 반대 sep 옵션을 사용하면 띄어쓰기 말고 다른 문자를 넣을 수 있도록 할 수 있다 sep"내용" 이런 형식으로 사용하면 예를 들어 print("010", "1234", "5678..
n = int(input()) a = list(map(int, input().split())) a.sort() c = 0 for i in range(1, n+1): c += sum(a[0:i]) print(c) 모두가 인출하는 데 걸리는 시간의 합을 줄이기 위해서는 인출 시간이 적은 순으로 정렬 sort로 작은 순서대로 정렬 sum(a[0:i]) 로 리스트의 0번째부터 i번째까지 더해주기
from collections import deque def bfs(): q = deque() q.append(n) while q: x = q.popleft() if x == k: print(a[x]) break for i in (x-1, x+1, x*2): if 0
n, m = map(int, input().split()) a = set() b = set() for i in range(n): a.add(input()) for i in range(m): b.add(input()) r = sorted(list(a & b)) # 교집합 print(len(r)) for i in r: print(i) set을 이용해 각 집합에 듣도 못한 사람의 명단과 보도 못한 사람의 명단을 add를 이용해 저장 교집합 &를 사용해 중복되는 문자열을 선택하고 sorted로 사전식으로 정렬한다
import sys n = int(sys.stdin.readline()) a = set() for i in range(n): k = sys.stdin.readline().strip().split() if k[0] == 'add': a.add(int(k[1])) elif k[0] == 'remove': a.discard(int(k[1])) elif k[0] == 'check': if int(k[1]) in a: print(1) else: print(0) elif k[0] == 'toggle': if int(k[1]) in a: a.discard(int(k[1])) else: a.add(int(k[1])) elif k[0] == 'all': a = set([i for i in range(1, 21)]) el..
n, m, v = map(int, input().split()) g = [[0] * (n+1) for i in range(n+1)] for i in range(m): a, b = map(int, input().split()) g[a][b] = g[b][a] = 1 visit = [0] * (n+1) def dfs(v): visit[v] = 1 # 방문한 점 1 print(v, end=" ") for i in range(1, n+1): if (visit[i]==0) and (g[v][i]==1): dfs(i) def bfs(v): q = [v] visit[v] = 0 # 방문한 점 0 while q: v = q.pop(0) print(v, end=" ") for i in range(1, n+1): if (..
n = int(input()) def sm(num): if num == 1: return 1 elif num == 2: return 2 elif num == 3: return 4 else: return sm(num-1) + sm(num-2) + sm(num-3) for i in range(n): num = int(input()) print(sm(num)) DP문제 1 - (1) - 1개 2 - (1+1), (2) - 2개 3 - (1+1+1), (1+2), (2+1), (3) - 4개 4 - (1+1+1+1), (1+1+2), (1+2+1), (1+3), (2+1+1), (2+2), (3+1) - 7개 5 - (1+1+1+1+1), (1+1+1+2), (1+1+2+1), (1+1+3), (1+2+1+1)..
n = int(input()) a = [0] * (n+1) # n만큼 초기화 for i in range(2, n+1): # 1은 횟수가 0이니까 2부터 탐색 a[i] = a[i-1] + 1 # 기본 값으로 이전 항의 연산 횟수 + 1 if i % 2 == 0: a[i] = min(a[i], a[i//2] + 1) if i % 3 == 0: a[i] = min(a[i], a[i//3] + 1) # 미리 저장해 둔 값과 몫+1 한 값 중 더 작은 값 print(a[n]) DP문제로 작은 문제의 결괏값을 큰 문제에서도 활용하기 다이나믹 프로그래밍은 두 가지 방식이 있는데 보통 상향식 방식을 이용했을 때 성능이 좋다 상향식 방식은 메모이제이션 기법 활용 - 한 번 연산을 통한 결괏값을 메모리에 저장해 두고 같은..