파이썬 70

[백준/파이썬] 1436번 영화감독 숌

https://www.acmicpc.net/problem/1436 1436번: 영화감독 숌 666은 종말을 나타내는 숫자라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타 www.acmicpc.net import sys read = sys.stdin.readline n = int(read().rstrip()) nth = 666 # 비교할 숫자 cnt = 0 while True: if '666' in str(nth): cnt += 1 if cnt == n: print(nth) break nth += 1 처음에는 for문을 써야하나 복잡하게만 생각을 했다. 하지만, 의외로 간단한 문제였다. 66..

Algorithm/Problems 2022.11.17

[백준/파이썬] 1018번 체스판 다시 칠하기

https://www.acmicpc.net/problem/1018 1018번: 체스판 다시 칠하기 첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다. www.acmicpc.net import sys read = sys.stdin.readline h, w = list(map(int, read().split())) board = [] result = [] for _ in range(h): board.append(input()) # h-7 w-7 하는 이유? # 8*8 체스판을 만들어야 하는데, 인덱스를 벗어나면 안되기 때문 for i in range(h-7): for ..

Algorithm/Problems 2022.11.14

[백준/파이썬] 7568번 덩치

https://www.acmicpc.net/problem/7568 7568번: 덩치 우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A 와 B의 덩 www.acmicpc.net import sys read = sys.stdin.readline n = int(read().rstrip()) infos = [] for _ in range(n): weight, height = list(map(int, read().split())) infos.append((weight, height)) for i in infos: rank = 1 for j in infos: if i..

Algorithm/Problems 2022.11.14

[백준/파이썬] 2231번 분해합

https://www.acmicpc.net/problem/2231 2231번: 분해합 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 www.acmicpc.net n = int(input()) result = 0 for i in range(1, n+1): nums = list(map(int, str(i))) result = sum(nums) + i if result == n: print(i) break if i == n: print(0) 어떠한 수 m과 m의 각 자리 수의 합이 입력 받은 n이 되어야한다. 이때, m은 n의 분해..

Algorithm/Problems 2022.11.10

[백준/파이썬] 2798번 블랙잭

https://www.acmicpc.net/problem/2798 2798번: 블랙잭 첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장 www.acmicpc.net import sys from itertools import combinations read = sys.stdin.readline n, m = map(int, read().split()) cards = list(map(int, read().split())) card_three = list(combinations(cards, 3)) totals = [] for i in..

Algorithm/Problems 2022.11.10

[백준/파이썬] 25501번 재귀의 귀재

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

Algorithm/Problems 2022.11.09

[백준/파이썬] 18870번 좌표 압축

https://www.acmicpc.net/problem/18870 18870번: 좌표 압축 수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다. X1, X2, ..., XN에 좌 www.acmicpc.net import sys read = sys.stdin.readline n = int(read()) dots = list(map(int, read().split())) pressed = sorted(list(set(dots))) dic = {pressed[i] : i for i in range(len(pressed))} for i in dots: pri..

Algorithm/Problems 2022.11.09

[백준/파이썬] 10814번 나이순 정렬

https://www.acmicpc.net/problem/10814 10814번: 나이순 정렬 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 www.acmicpc.net import sys read = sys.stdin.readline n = int(input()) members = [] for i in range(n): age, name = read().split() age = int(age) members.append((age, name, i)) members.sort(key=lambda x: (x[0], x[2])) for i in range(n): print(m..

Algorithm/Problems 2022.11.09

[백준/파이썬] 1181번 단어 정렬

https://www.acmicpc.net/problem/1181 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net import sys read = sys.stdin.readline words = [] n = int(read()) for _ in range(n): word = input() leng = len(word) words.append((leng, word)) set_words = list(set(words)) set_words.sort(key=lambda x: (x[0], x[1])) for..

Algorithm/Problems 2022.11.09

[백준/파이썬] 11651번 좌표 정렬하기2

https://www.acmicpc.net/problem/11651 11651번: 좌표 정렬하기 2 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. www.acmicpc.net import sys read = sys.stdin.readline dots = [] n = int(read()) for i in range(n): dot = list(map(int, read().split())) dots.append(dot) dots.sort(key=lambda x: (x[1],x[0])) for i in range(n):..

Algorithm/Problems 2022.11.08