백준 383

[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

[baekjoon] 백준 2529번(파이썬): 부등호

문제 2529번: 부등호 여러분은 제시된 부등호 관계를 만족하는 k+1 자리의 최대, 최소 정수를 첫째 줄과 둘째 줄에 각각 출력해야 한다. 단 아래 예(1)과 같이 첫 자리가 0인 경우도 정수에 포함되어야 한다. 모든 입력 www.acmicpc.net 알고리즘 - 백 트래킹 문제로 부등호를 확인하면서 숫자를 넣어줘 부등호에 맞는 숫자를 합친 문자열을 확인한다. 코드 import sys # 부등호 확인 함수 def poss(i, j, l): if l == ">": return i > j else: return i < j # backTracking def backTracking(idx, word): global mx, mn # idx가 부등호 문자의 개수보다 크다면 모든 숫자를 알맞게 넣은 것 if idx..

CodingTest/Baekjoon 2022.02.12

[baekjoon] 백준 2304번(파이썬): 창고 다각형

문제 1535번: 안녕 첫째 줄에 사람의 수 N(≤ 20)이 들어온다. 둘째 줄에는 각각의 사람에게 인사를 할 때, 잃는 체력이 1번 사람부터 순서대로 들어오고, 셋째 줄에는 각각의 사람에게 인사를 할 때, 얻는 기쁨이 1번 www.acmicpc.net 알고리즘 - 반복문을 통해 각 체력내에 얻을 수 있는 기쁨을 확인한다. - 현재 체력으로 인사를 못한다면 현재 기쁨을 이전 기쁨으로 초기화한다. - 현재 체력으로 인사를 할 수 있다면 더 큰 값으로 기쁨을 초기화한다. 코드 import sys n = int(sys.stdin.readline()) hp = list(map(int, sys.stdin.readline().split())) joy = list(map(int, sys.stdin.readline()..

CodingTest/Baekjoon 2022.02.12

[baekjoon] 백준 2304번(파이썬): 창고 다각형

문제 2304번: 창고 다각형 첫 줄에는 기둥의 개수를 나타내는 정수 N이 주어진다. N은 1 이상 1,000 이하이다. 그 다음 N 개의 줄에는 각 줄에 각 기둥의 왼쪽 면의 위치를 나타내는 정수 L과 높이를 나타내는 정수 H가 한 개의 www.acmicpc.net 알고리즘 - 반복문을 통해 최대 높이를 구한다. - 최대 높이를 포함하여 왼쪽 상자부터 확인하여 창고의 넓이를 추가한다. - 반대로 오른쪽 상자부터 최대 높이를 제외하여 똑같은 방법으로 창고의 넓이를 추가한다. - 왼쪽/오른쪽 상자부터 확인하여 구해진 창고의 넓이를 출력한다. 코드 import sys n = int(sys.stdin.readline()) storage_list = [0] * 1001 max_h = 0 # 최대 높이 max_h..

CodingTest/Baekjoon 2022.02.10