목록Python (79)
JiSoo's Devlog
n, m = map(int, input().split()) dic_n = {} dic_s = {} for i in range(n): v = input().strip() dic_n[str(i+1)] = v dic_s[v] = i+1 for i in range(m): q = input().strip() if q.isdigit(): print(dic_n[q]) if q.isalpha(): print(dic_s[q]) 딕셔너리 2개를 사용해야 한다 {숫자:이름} : 숫자로 문자 출력 {이름:숫자} : 문자로 숫자 출력 input().strip()을 사용한 건 \n 마지막 공백 문자를 제거해 주기 위해서 isdigit()로 숫자인지 판별 isalpha()로 영문이나 한글인지 확인
n = int(input()) al = list(map(int, input().split())) bl = list(map(int, input().split())) c = 0 for i in range(n): c += min(al) * max(bl) al.pop(al.index(min(al))) bl.pop(bl.index(max(bl))) print(c) 배열 A와 B의 원소를 각각 곱한 값의 합의 최솟값을 구해야 된다 B는 재배열 X A배열에서 제일 작은 수와 B배열에서 제일 큰 수를 곱하고 이런 식으로 계속 반복해 더하기 두 배열에서 해당 값을 각각 곱해주고 pop으로 빼주고를 반복 n = int(input()) al = list(map(int, input().split())) bl = list(ma..
import sys input = sys.stdin.readline n, m = map(int, input().split()) no = [list(map(int, input().split())) for _ in range(m)] am = [[] for _ in range(n+1)] for u, v in no: am[u].append(v) am[v].append(u) c = 0 vi = [0] * (n+1) def dfs(v): vi[v] = 1 for i in am[v]: if not vi[i]: dfs(i) for i in range(1, n+1): if not vi[i]: dfs(i) c += 1 print(c) 연결 요소의 개수가 그래프의 개수를 의미 no[u]에 v 저장하고 no[v]에 u 저장 ..
m = int(input()) a = [0] * 101 a[1] = 1 a[2] = 1 a[3] = 1 for i in range(4, 101): a[i] = a[i-2] + a[i-3] for i in range(m): n = int(input()) print(a[n]) 점화식은 P(n) = P(n-2) + P(n-3)
n = set(range(1, 10001)) m = set() for i in range(1, 10001): for j in str(i): i += int(j) m.add(i) s = sorted(n - m) for i in s: print(i) set이 중복을 허용하지 않기 때문에 그 속성을 사용하기 위해 사용했다 입력되는 i를 str로 바꿔주고 for문을 돌면서 만약 i가 423이라면 j = "4", "2", "3" 생성자가 있는 숫자들만 m에 추가하고 전체 자연수에서 빼주면 셀프 넘버만 남는다
from collections import deque n, m = map(int, input().split()) g = [] dx = [-1, 1, 0, 0] dy = [0, 0, -1, 1] for _ in range(n): g.append(list(map(int, input()))) def bfs(x, y): q = deque() q.append((x, y)) while q: x, y = q.popleft() for i in range(4): nx = x + dx[i] ny = y + dy[i] if nx = n or ny = m: continue if g[nx][ny] == 0: continue if g[nx][ny] == 1: g[nx][ny] = g[x][..
from collections import deque n, m = map(int, input().split()) g = [] dx = [-1, 1, 0, 0] dy = [0, 0, -1, 1] for _ in range(n): g.append(list(map(int, input()))) def bfs(x, y): q = deque() q.append((x, y)) while q: x, y = q.popleft() for i in range(4): nx = x + dx[i] ny = y + dy[i] if nx = n or ny = m: continue if g[nx][ny] == 0: continue if g[nx][ny] == 1: g[nx][ny] = g[x][..
n, m = input().split() a = list(n) b = list(m) a.reverse() b.reverse() x = int(a[0]+a[1]+a[2]) y = int(b[0]+b[1]+b[2]) if x > y: print(x) else: print(y) input()으로 받는 모든 것은 문자열로 취급! 문자열로 입력받아서 리스트로 저장하고 reverse 함수로 뒤집어 더 큰 수를 출력한다 n, m = input().split() n = int(n[::-1]) m = int(m[::-1]) if n > m: print(n) else: print(m) 리스트 슬라이싱은 리스트변수[시작인덱스:종료인덱스:step]으로 이루어진다 reverse()랑 같은 기능
from math import factorial n = int(input()) for i in range(n): a, b = map(int, input().split()) r = factorial(b) // (factorial(a)*factorial(b-a)) print(r) 조합 공식을 사용해야 하는데 bCa라면 b!/(b-a)!a! factorial을 사용해서 계산해야 한다
c = ['c=', 'c-', 'dz=', 'd-', 'lj', 'nj', 's=', 'z='] n = input() for i in c: n = n.replace(i, '*') print(len(n)) 문자를 변환해 주는 replace 함수를 사용했다 for문을 사용해 저장해 둔 크로아티아 알파벳 문자열을 돌면서 그 문자가 있으면 *로 바꿔주도록 했다 replace 함수를 문자열 원형이 변형되게 사용하려면 입력받은 변수랑 같은 이름으로 지정하여야 for문을 반복하는 동안 수정된 내용이 끝까지 유지될 수 있다고 한다!