목록분류 전체보기 (167)
JiSoo's Devlog
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문을 반복하는 동안 수정된 내용이 끝까지 유지될 수 있다고 한다!
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번째까지 더해주기