목록코테준비 (91)
JiSoo's Devlog
n = int(input()) a = {} for i in range(n): j = int(input()) if j in a: a[j] += 1 else: a[j] = 1 r = sorted(a.items(), key=lambda x : (-x[1], x[0])) print(r[0][0]) 딕셔너리를 사용하는 문제로 카드번호를 키로 저장하고 카드가 들어오면 value를 1씩 증가해 저장 {카드값: 카드개수} 입력받은 후 sorted 함수로 정렬해 주는데 value값 기준으로 내림차순 정렬하고 그 후 key값 기준 오름차순 정렬
n, m = map(int, input().split()) a = list(map(int, input().split())) b = list(map(int, input().split())) c = a + b c.sort() # print(*c) print(' '.join(map(str, c))) join을 이용해 리스트 요소를 연결할 수 있다 ! 리스트의 요소가 모두 문자열일 때만 사용 가능하기 때문에 이 문자에서는 map으로 문자열로 만들어준 후 연결 *c 이렇게 해서 리스트 요소를 한 줄로 출력도 가능
n, m = map(int, input().split()) a = [] def dfs(): if len(a) == m: print(' '.join(map(str, a))) return for i in range(1, n+1): if i not in a: a.append(i) dfs() a.pop() dfs() m개의 수열을 저장하기 위한 리스트 a를 만든다 리스트에 들어간 수열의 개수가 m개가 되면 숫자 출력하고 나오기 리스트 a의 중복 여부를 확인해서 아니면 리스트에 추가
n = input() if "0" not in n: print(-1) else: s = 0 for i in range(len(n)): s += int(n[i]) if s % 3 != 0: print(-1) else: sn = sorted(n, reverse=True) an = "".join(sn) print(an) 30의 배수는 3의 배수이면서 10의 배수이기도 하다 10의 배수가 되려면 마지막 일의 자리가 반드시 0으로 끝나야 한다 3의 배수가 되려면 각 자릿수의 합이 3의 배수이면 된다 0이 들어가지 않는다면 -1 출력 30의 배수가 되는 가장 큰 값을 출력해야 하기 때문에 내림차순으로 정렬만 해주면 된다
n = int(input()) ro = [] v = [] for i in range(n): ro.append(int(input())) ro.sort(reverse=True) for j in range(n): v.append(ro[j]*(j+1)) print(max(v)) 예를 들어 10과 15의 무게를 가진 두 로프라고 했을 때 두 로프가 최대로 버틸 수 있는 무게는 10 그렇기 때문에 10*2 = 20이 된다 입력받은 로프의 무게를 리스트에 넣어주고 내림차순으로 정렬 [15, 10] 이렇게 되는데 여기서 두 번째 값인 10을 버틸 수 있게 되기 때문 결론적으로 n번째로 큰 수를 n번 곱해주면 된다는 규칙이 나오게 된다 ro[n] * n번째 자리
n = int(input()) a = [] for i in range(n): a.append(int(input())) d = [0] * (n) if len(a)
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 저장 ..