파이썬 404

[baekjoon] 백준 1436번(파이썬): 영화감독 숌

문제 1436번: 영화감독 숌 666은 종말을 나타내는 숫자라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타 www.acmicpc.net 알고리즘 - 반복문을 통해 n번째 영화의 제목을 찾는다. - 현재 제목이 666을 포함되어 있다면 cnt를 카운트한다. - cnt가 구해야 하는 n번째 영화라면 six를 출력한다. - 매 사이클마다 제목을 카운트한다. 코드 n = int(input()) six = 666 cnt = 0 while True: # 현재 제목이 666을 포함되어있다면 cnt 카운트 if '666' in str(six): cnt += 1 # cnt가 구해야하는 n번째 영화라면 s..

CodingTest/Baekjoon 2022.03.12

[baekjoon] 백준 1312번(파이썬): 소수

문제 1312번: 소수 피제수(분자) A와 제수(분모) B가 있다. 두 수를 나누었을 때, 소숫점 아래 N번째 자리수를 구하려고 한다. 예를 들어, A=3, B=4, N=1이라면, A÷B=0.75 이므로 출력 값은 7이 된다. www.acmicpc.net 알고리즘 - 처음에 a를 b로 나눠 나머지를 a에 담는다. (1의 자릿수) - n - 1을 반복하여 나눗셈을 구현한다. (소수 n-1번째 자리까지 나눔) - 마지막 나눗셈의 몫을 출력한다. (n번째 자리 수를 나눈 몫을 출력) 코드 import sys a, b, n = map(int, sys.stdin.readline().split()) a %= b # 처음에 a를 b로 나눠준다. (1의 자리수) # n - 1 반복을 통해 나눗셈을 구현 for _ in..

CodingTest/Baekjoon 2022.03.10

[baekjoon] 백준 1292번(파이썬): 쉽게 푸는 문제

문제 1292번: 쉽게 푸는 문제 첫째 줄에 구간의 시작과 끝을 나타내는 정수 A, B(1 ≤ A ≤ B ≤ 1,000)가 주어진다. 즉, 수열에서 A번째 숫자부터 B번째 숫자까지 합을 구하면 된다. www.acmicpc.net 알고리즘 - 반복문을 통해 1부터 b구간까지의 수열을 만든다. - 만든 수열의 a부터 b구간까지 더한 값을 출력한다. 코드 import sys a, b = map(int, sys.stdin.readline().split()) temp = [] # 반복문을 통해 b구간까지의 수열을 만든다. for i in range(1, b + 1): for j in range(i): temp.append(i) # 만든 수열의 a부터 b구간까지 더한 값을 출력 print(sum(temp[a - 1..

CodingTest/Baekjoon 2022.03.09

[baekjoon] 백준 1246번(파이썬): 온라인 판매

문제 1246번: 온라인 판매 첫째 줄에 정수 N(1 ≤ N ≤ 1,000)과 M(1 ≤ M ≤ 1,000)이 입력된다. 둘째 줄부터 M+1번째 줄까지 i+1번째 줄에는 Pi(1 ≤ Pi ≤ 1,000,000)가 입력된다. www.acmicpc.net 알고리즘 - 책정한 가격을 작은 것부터 확인하기 위해 오름차순으로 정렬한다. - 반복문을 통해 책정한 가격으로 달걀을 얼마나 팔 수 있는지 확인한다. - min 함수를 통해 달걀보다 사는 사람이 많으면 예외 처리를 한다. - 현재 수익보다 현재 책정한 가격으로 판매하는 달걀의 수익이 더 클 경우 수익과 책정 가격을 초기화한다. 코드 import sys n, m = map(int, sys.stdin.readline().split()) p = [int(sys...

CodingTest/Baekjoon 2022.03.08

[baekjoon] 백준 1037번(파이썬): 약수

문제 1037번: 약수 첫째 줄에 N의 진짜 약수의 개수가 주어진다. 이 개수는 50보다 작거나 같은 자연수이다. 둘째 줄에는 N의 진짜 약수가 주어진다. 1,000,000보다 작거나 같고, 2보다 크거나 같은 자연수이고, 중복되 www.acmicpc.net 알고리즘 - 약수중에서 제일 작은 수와 제일 큰 수를 곱하면 어떤 수로 나눴는지 알 수 있다. - max, min 메서드를 통해 제일 큰 수와 제일 작은 수를 구하여 곱한 후, 그 값을 출력한다. 코드 import sys n = int(sys.stdin.readline()) m = list(map(int, sys.stdin.readline().split())) # 약수중에서 제일 작은 수와 제일 큰 수를 곱하면 어떤 수를 나눴는지 알 수 있다. re..

CodingTest/Baekjoon 2022.03.07

[baekjoon] 백준 1018번(파이썬): 체스판 다시 칠하기

문제 1018번: 체스판 다시 칠하기 첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다. www.acmicpc.net 알고리즘 - 반복문을 통해 체스판을 확인한다. 이때, 8X8 체스판의 크기만큼 잘라 확인한다. - W로 시작하는 경우와 B로 시작하는 경우를 나누어 확인한다. - 8X8 범위 체스판을 확인할 때 행과 열의 합이 짝수, 홀수이면 각각 일정한 색을 가지게 된다.(체크무늬) - 각각 일정한 색을 가질 때 다른 색을 가지는 경우를 카운트하여 제일 적은 경우를 출력한다. 코드 import sys n, m = map(int, sys.stdin.readline(..

CodingTest/Baekjoon 2022.03.06

[baekjoon] 백준 8911번(파이썬): 거북이

문제 8911번: 거북이 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 컨트롤 프로그램이 주어진다. 프로그램은 항상 문제의 설명에 나와있는 네가지 명령으로만 이루어져 www.acmicpc.net 알고리즘 - 테스트 케이스만큼 반복 - 반복문을 통해 명령을 확인한다. - 각 명령에 따라 다음 코드를 수행 - 매 반복마다 거북이가 지나간 영역의 최댓값과 최솟값을 초기화 - 명령이 끝난 후 거북이가 지나간 최대 영역을 출력 코드 import sys t = int(sys.stdin.readline()) dx = [0, -1, 0, 1] dy = [1, 0, -1, 0] for _ in range(t): order = list(map(str, sys.stdin.rea..

CodingTest/Baekjoon 2022.02.16

[baekjoon] 백준 6603번(파이썬): 로또

문제 6603번: 로또 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있다. 첫 번째 수는 k (6 < k < 13)이고, 다음 k개 수는 집합 S에 포함되는 수이다. S의 원소는 오름차순으로 www.acmicpc.net 알고리즘 - 백 트래킹 문제로 탐색한 로또 번호인지 확인하고 탐색하지 않았다면 탐색 후 경우의 수 idx에 추가한다. 코드 import sys def lotto(idx, num): # 6개의 로또 번호 경우의 수를 찾았다면 결과를 출력하고 리턴 if idx == 6: print(*res) return # 반복문을 통해 로또 집합을 확인 for i in range(num, k): # 탐색하지 않은 로또 번호라면 탐색 if not visited[i]..

CodingTest/Baekjoon 2022.02.15

[baekjoon] 백준 4948번(파이썬): 베르트랑 공준

문제 4948번: 베르트랑 공준 베르트랑 공준은 임의의 자연수 n에 대하여, n보다 크고, 2n보다 작거나 같은 소수는 적어도 하나 존재한다는 내용을 담고 있다. 이 명제는 조제프 베르트랑이 1845년에 추측했고, 파프누티 체비쇼 www.acmicpc.net 알고리즘 - 반복문을 통해 가능한 모든 수가 소수인지 확인한다. - 소수인지 확인했다면 반복문을 통해 케이스를 입력받는다. - 입력받은 수가 0이라면 반복을 멈추고 아니라면 다음을 수행한다. - 반복문을 통해 소수인 수가 케이스 구간에 있는지 확인한다. - 케이스 구간에 있다면 카운트한다. 코드 import sys # 소수인지 확인 def decimal(x): if x == 1: return False for k in range(2, int(x**0..

CodingTest/Baekjoon 2022.02.14

[baekjoon] 백준 4307번(파이썬): 개미

문제 4307번: 개미 개미 여러 마리가 길이가 lcm인 막대 위에 있다. 각 개미의 이동 속도는 모두 일정하며, 1cm/s이다. 개미가 막대의 마지막까지 걸어간다면, 개미는 그 즉시 떨어지게 된다. 또, 두 개미가 만나게 된 www.acmicpc.net 알고리즘 - 모든 개미의 위치를 확인하면서 막대 기준 좌측과 우측에 가까운지 확인한다. - 두 경우에서 개미가 가장 빠른 시간에 떨어질 경우와 가장 늦은 시간에 떨어질 경우를 구한다. - 두 개미가 만났을 때 방향을 바꿔야 하는 경우는 신경 쓰지 않고 문제를 수행한다.(결국 개미의 번호가 없다면 두 개미는 가려고 하는 방향을 계속 가는 것이기 때문.) 코드 import sys t = int(sys.stdin.readline()) for _ in rang..

CodingTest/Baekjoon 2022.02.13