백준 383

[baekjoon] 백준 1495번(파이썬): 기타리스트

문제 1495번: 기타리스트 첫째 줄에 N, S, M이 주어진다. (1 ≤ N ≤ 50, 1 ≤ M ≤ 1,000, 0 ≤ S ≤ M) 둘째 줄에는 각 곡이 시작하기 전에 줄 수 있는 볼륨의 차이가 주어진다. 이 값은 1보다 크거나 같고, M보다 작거나 같다. www.acmicpc.net 알고리즘 - 2차원 배열을 통해 각 곡마다 볼륨을 저장한다. - 반복문을 통해 각 곡을 통해 만들 수 있는 볼륨을 dp에 담는다. - 현재 곡에 볼륨이 담겨있다면 볼륨을 키우거나 줄인 값을 다음 곡에 현재 볼륨을 담는다. - 모든 곡을 확인했다면 마지막 곡에 최대 볼륨을 출력한다. 코드 import sys n, s, m = map(int, sys.stdin.readline().split()) v = list(map(in..

CodingTest/Baekjoon 2022.01.28

[baekjoon] 백준 1342번(파이썬): 행운의 문자열

문제 1342번: 행운의 문자열 민식이와 준영이는 자기 방에서 문자열을 공부하고 있다. 민식이가 말하길 인접해 있는 모든 문자가 같지 않은 문자열을 행운의 문자열이라고 한다고 한다. 준영이는 문자열 S를 분석하기 시작 www.acmicpc.net 알고리즘 - 백트래킹을 통해 문제를 수행한다. - Counter 함수를 통해 문자열 안에 문자의 개수를 딕셔너리형으로 변환시킨다. - 반복문을 통해 단어를 확인한다. - 현재 단어와 이전 단어가 같거나 현재 단어의 개수가 0일 경우 다음 단어를 확인한다. - 위 2가지 경우가 아니라면 현재 단어의 개수를 감소시키고 재귀 함수를 돌린다. - 재귀 함수를 빠져나오게 되면 현재 단어의 개수를 다시 증가시킨다.(백 트래킹) - 이때, 문자열의 길이와 현재 비교하고 있는..

CodingTest/Baekjoon 2022.01.27

[baekjoon] 백준 1309번(파이썬): 동물원

문제 1309번: 동물원 첫째 줄에 우리의 크기 N(1≤N≤100,000)이 주어진다. www.acmicpc.net 알고리즘 - n번째 우리의 사자가 없는 경우와 왼쪽에 있을 경우, 오른쪽의 있을 경우를 나눠서 문제를 수행한다. - n번째 우리의 사자를 배치하는 경우의 수의 합을 출력한다. 코드 import sys n = int(sys.stdin.readline()) dp = [[0, 0, 0] for _ in range(n + 1)] dp[1][0], dp[1][1], dp[1][2] = 1, 1, 1 # n = 1일 때, 3가지 경우의 수 # 점화식 : n번째 우리의 사자가 없는 경우와 왼쪽에 있을 경우와 오른쪽의 있을 경우로 나눠서 수행 for i in range(2, n + 1): dp[i][0]..

CodingTest/Baekjoon 2022.01.26

[baekjoon] 백준 1080번(파이썬): 행렬

문제 1080번: 행렬 첫째 줄에 행렬의 크기 N M이 주어진다. N과 M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 행렬 A가 주어지고, 그 다음줄부터 N개의 줄에는 행렬 B가 주어진다. www.acmicpc.net 알고리즘 - 반복문을 통해 행렬 a와 행렬 b를 비교한다. - 반복은 3*3 기준으로 확인하기 위해 n-2, m-2로 횟수를 제한한다. - 행렬 a와 행렬 b가 다르면 뒤집는다. - 두 행렬의 모든 부분을 비교 후 두 행렬이 같은지 확인한다. - 두 행렬이 같다면 뒤집은 횟수를 출력하고 다르다면 -1을 출력한다. 코드 import sys n, m = map(int, sys.stdin.readline().split()) a = [list(map(int, sys.stdin...

CodingTest/Baekjoon 2022.01.25

[baekjoon] 백준 1074번(파이썬): Z

문제 1074번: Z 한수는 크기가 2N × 2N인 2차원 배열을 Z모양으로 탐색하려고 한다. 예를 들어, 2×2배열을 왼쪽 위칸, 오른쪽 위칸, 왼쪽 아래칸, 오른쪽 아래칸 순서대로 방문하면 Z모양이다. N > 1인 경우, 배열을 www.acmicpc.net 알고리즘 - 큰 사각형(배열)부터 작은 사각형(배열)으로 재귀 함수를 통해 탐색한다. - 탐색 중인 배열 중에 찾는 좌표가 없다면 좌표에 크기를 더한다. => 더 이상 탐색할 필요 없는 사각형(배열)이기 때문. - 찾는 좌표라면 res를 출력하고 종료한다. 코드 import sys def visited(n, r, c): global res # 찾는 좌표라면 res를 출력하고 종료 if r == R and c == C: print(int(res)) ..

CodingTest/Baekjoon 2022.01.24

[baekjoon] 백준 2870번(파이썬): 수학숙제

문제 2870번: 수학숙제 종이에서 찾은 숫자의 개수를 M이라고 하면, 출력은 M줄로 이루어져야 한다. 각 줄에는 종이에서 찾은 숫자를 하나씩 출력해야 한다. 이때, 비내림차순으로 출력해야 한다. 비내림차순은 내림차 www.acmicpc.net 알고리즘 - 반복문을 통해 각 줄을 확인한다. - 반복문을 통해 줄의 한 단어씩 확인한다. - 단어가 숫자라면 cnt에 추가하고 숫자가 아닌데 cnt에 숫자가 있다면 cnt를 temp에 추가 후 cnt를 초기화시킨다. - 모든 단어를 확인 후에도 cnt에 숫자가 있다면 cnt를 temp에 추가한다. - 각 줄을 확인할 때마다 temp에 담겨있는 모든 수를 res에 추가한다. - 모든 줄을 확인 후에 res를 오름차순으로 정렬 후 한 숫자씩 출력한다. 코드 impo..

CodingTest/Baekjoon 2022.01.23

[baekjoon] 백준 2608번(파이썬): 로마 숫자

문제 2608번: 로마 숫자 첫째 줄과 둘째 줄에 하나씩 로마 숫자로 표현된 수가 주어진다. 입력된 각 수는 2000 보다 작거나 같고, 두 수의 합은 4000보다 작다. www.acmicpc.net 알고리즘 - 아라비아 숫자는 반복문을 통해 각 자릿수를 탐색한다. - 탐색하면서 자릿수가 2개 합쳤을 때 단어가 되는지 확인하고 단어가 되면 그 단어에 값을 더해준다. - 단어가 되지 않으면 하나의 단어의 값을 더해주었다. - 이때 탐색유무를 꼭 체크해주면서 문제를 수행해야 한다. - 로마 숫자를 구하는 것은 밑에 두 코드가 다르지만 결국 자릿수에 따라서 문자를 더해주는 것은 같다. 코드 import sys # 아라비아 숫자 구하기 def Arabia(word): answer = 0 visited = [Fa..

CodingTest/Baekjoon 2022.01.22

[baekjoon] 백준 9536번(파이썬): 여우는 어떻게 울지?

문제 9536번: 여우는 어떻게 울지? 각 테스트케이스마다 여우의 울음소리를 한 줄씩, 녹음된 순서대로 출력한다. 여우의 울음소리가 녹음되어 있음이 보장된다. (알려진 것과는 달리, 여우는 모스 부호로 의사소통하지 않는다.) www.acmicpc.net 알고리즘 - 테스트 케이스만큼 반복한다. - 반복문을 통해 동물들의 울음소리를 확인하고 동물들의 울음소리가 아닌 질문이 주어진다면 반복을 멈춰준다. - 동물들의 울음소리라면 녹음된 음성에서 동물들의 울음소리를 반복문을 통해 제거한다. 코드 import sys t = int(sys.stdin.readline()) # 테스트 케이스만큼 반복 for _ in range(t): sound = list(map(str, sys.stdin.readline().spli..

CodingTest/Baekjoon 2022.01.21

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

문제 3048번: 개미 T초가 지난 후에 개미의 순서를 출력한다. 첫 번째 개미 그룹은 왼쪽에서 오른쪽으로 움직이고, 두 번째 그룹은 반대 방향으로 움직인다. www.acmicpc.net 알고리즘 - 두 개미 그룹 중 첫 번째 그룹의 개미들이 오른쪽으로 움직인다고 생각하며 문제를 수행한다. - t초동안 반복하고 총개미의 길이만큼 반복하여 두 개미 그룹의 위치를 확인한다. - 두 개미 그룹이 만났다면 그 두 개미의 위치를 바꾼다. - 이 반복은 선두 개미의 위치가 바뀌기 전까지 반복하며 선두 개미의 위치가 바뀌었다면 반복을 멈춰준다. 코드 import sys n1, n2 = map(int, sys.stdin.readline().split()) ant1 = list(map(str,sys.stdin.readl..

CodingTest/Baekjoon 2022.01.20

[baekjoon] 백준 2002번(파이썬): 추월

문제 2002번: 추월 입력은 총 2N+1개의 줄로 이루어져 있다. 첫 줄에는 차의 대수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 대근이가 적은 차량 번호 목록이 주어지고, N+2째 줄부터 N개의 줄에는 영식이 www.acmicpc.net 알고리즘 - 반복문을 통해 들어간 차량은 딕셔너리형으로 나간 차량은 리스트 형식으로 입력받는다. - 반복문을 통해 먼저 들어갔다가 나온 차량보다 더 빨리 나온 차량이 있는지 확인한다. 코드 import sys n = int(sys.stdin.readline()) firstCar = {} out = [] cnt = 0 # 반복문을 통해 들어간 차를 딕셔너리로 입력 받음 for i in range(n): firstCar[str(sys.stdin..

CodingTest/Baekjoon 2022.01.19