BOJ/Python 176

백준 11003번 최솟값 찾기 파이썬

https://www.acmicpc.net/problem/11003 11003번: 최솟값 찾기 N개의 수 A1, A2, ..., AN과 L이 주어진다. Di = Ai-L+1 ~ Ai 중의 최솟값이라고 할 때, D에 저장된 수를 출력하는 프로그램을 작성하시오. 이때, i ≤ 0 인 Ai는 무시하고 D를 구해야 한다. www.acmicpc.net 내 코드 import sys from collections import deque input = sys.stdin.readline N, L = map(int, input().split()) A = list(map(int, input().split())) dq = deque() for i in range(N): while dq and (dq[-1][1] > A[i])..

BOJ/Python 2023.02.17

백준 12891번 DNA 비밀번호 파이썬

https://www.acmicpc.net/problem/12891 12891번: DNA 비밀번호 평소에 문자열을 가지고 노는 것을 좋아하는 민호는 DNA 문자열을 알게 되었다. DNA 문자열은 모든 문자열에 등장하는 문자가 {‘A’, ‘C’, ‘G’, ‘T’} 인 문자열을 말한다. 예를 들어 “ACKA” www.acmicpc.net 내 답안 import sys input = sys.stdin.readline S, P = map(int, input().split()) DNA = input().rstrip() DNA_dict = {'A': 0, 'C': 1, 'G': 2, 'T': 3} ACGT = list(map(int, input().split())) result = 0 start_index = 0 e..

BOJ/Python 2023.02.14

백준 25305번 커트라인 파이썬

https://www.acmicpc.net/problem/25305 25305번: 커트라인 시험 응시자들 가운데 1등은 100점, 2등은 98점, 3등은 93점이다. 2등까지 상을 받으므로 커트라인은 98점이다. www.acmicpc.net 내 답안 import sys input = sys.stdin.readline N, K = map(int, input().split()) score = sorted(list(map(int, input().split()))) print(score[N-K]) Review 이 문제는 구현과, 정렬 보다는 N, K = map(int, input().split()) score = sorted(list(map(int, input().split()))) 입력을 어떤 식으로 받는지가..

BOJ/Python 2023.01.19

백준 10814번 나이순 정렬 파이썬

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

BOJ/Python 2023.01.18

백준 1316번 그룹 단어 체커 파이썬

https://www.acmicpc.net/problem/1316 1316번: 그룹 단어 체커 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때 www.acmicpc.net 내 답안 N = int(input()) check = 0 for i in range(N): x = input() group = [x[0]] for j in range(1, len(x)): if group[-1] != x[j]: group.append(x[j]) if len(set(group)) == len(group): check += 1 print(check) R..

BOJ/Python 2022.12.04

백준 5585번 거스름돈 파이썬

https://www.acmicpc.net/problem/5585 5585번: 거스름돈 타로는 자주 JOI잡화점에서 물건을 산다. JOI잡화점에는 잔돈으로 500엔, 100엔, 50엔, 10엔, 5엔, 1엔이 충분히 있고, 언제나 거스름돈 개수가 가장 적게 잔돈을 준다. 타로가 JOI잡화점에서 물건을 사 www.acmicpc.net 내 답안 en = [500, 100, 50, 10, 5, 1] cnt = 0 x = 1000 - int(input()) for i in en: cnt += (x // i) x %= i print(cnt) Review 그리디 알고리즘의 매우 간단한 대표적인 문제이다. 코드가 이해 안된다면 아래 글을 참고 하자. https://thingjin.tistory.com/entry/%E..

BOJ/Python 2022.12.03

백준 1541번 잃어버린 괄호 파이썬

https://www.acmicpc.net/problem/1541 1541번: 잃어버린 괄호 첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 www.acmicpc.net 내 답안 x = input().rstrip().split('-') result = [sum(map(int, i.split('+'))) for i in x] print(result[0] - sum(result[1:])) REVIEW 문제를 보면서 어떻게 하면 잘 계산을 할 수 있을까 고민을 하였다. 내가 생각한 순서는 이렇다. 1번 "-" 단위로 끊어서 리스트를 만든다. -> ["55", "5..

BOJ/Python 2022.12.02

백준 2193번 이친수 파이썬

https://www.acmicpc.net/problem/2193 2193번: 이친수 0과 1로만 이루어진 수를 이진수라 한다. 이러한 이진수 중 특별한 성질을 갖는 것들이 있는데, 이들을 이친수(pinary number)라 한다. 이친수는 다음의 성질을 만족한다. 이친수는 0으로 시작하지 않 www.acmicpc.net 내 답안 import sys input = sys.stdin.readline dp = [0] * 91 dp[0] = dp[1] = 1 N = int(input()) if N < 3: print(dp[N-1]) else: for i in range(N-2): dp[i+2] = dp[i+1] + dp[i] print(dp[N-1]) REVIEW 6자릿수까지 노가다 했는데, 결론은 규칙이 있..

BOJ/Python 2022.09.20

백준 9461번 파도반 수열 파이썬

https://www.acmicpc.net/problem/9461 9461번: 파도반 수열 오른쪽 그림과 같이 삼각형이 나선 모양으로 놓여져 있다. 첫 삼각형은 정삼각형으로 변의 길이는 1이다. 그 다음에는 다음과 같은 과정으로 정삼각형을 계속 추가한다. 나선에서 가장 긴 변의 www.acmicpc.net 내 답안 import sys input = sys.stdin.readline dp = [0] * 101 dp[0] = dp[1] = dp[2] = 1 for i in range(int(input())): n = int(input()) if n < 3: print(dp[n]) else: for i in range(n-2): dp[i+3] = dp[i] + dp[i+1] print(dp[n-1]) REVI..

BOJ/Python 2022.09.19

백준 1932번 정수 삼각형 파이썬

https://www.acmicpc.net/problem/1932 1932번: 정수 삼각형 첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다. www.acmicpc.net 내 답안 import sys input = sys.stdin.readline n = int(input()) dp = [list(map(int,input().split())) for i in range(n)] for i in range(n-1, 0, -1): for j in range(i): dp[i-1][j] += max(dp[i][j], dp[i][j+1]) print(dp[0][0]) Review 맨 아래서부터 둘 중의 한값중 큰 값을 그 윗 값에 더하는 것을 반복..

BOJ/Python 2022.09.18