전체 글 270

백준 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

[프로그래머스] 올바른 괄호 파이썬

https://school.programmers.co.kr/learn/courses/30/lessons/12909 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 내 답안 def solution(s): stack = [] for i in s: if i == '(': stack.append(i) else: if len(stack) == 0: return False else: stack.pop() if len(stack) != 0: return False else: return True Review 이 문제는 백준 9012 번 문제와 같다. https://th..

프로그래머스 2022.09.12

[프로그래머스] 성격 유형 검사하기 파이썬

https://school.programmers.co.kr/learn/courses/30/lessons/118666 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2022 KAKAO TECH INTERNSHIP 내 답안 def solution(survey, choices): score = {1:3, 2:2, 3:1, 4:0, 5:1, 6:2, 7:3} mid = 4 list1 = ['R','T','C','F','J','M','A','N'] list2 = [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] answer = '' for i in ra..

프로그래머스 2022.08.30

백준 1138번 한 줄로 서기 파이썬

https://www.acmicpc.net/problem/1138 1138번: 한 줄로 서기 첫째 줄에 사람의 수 N이 주어진다. N은 10보다 작거나 같은 자연수이다. 둘째 줄에는 키가 1인 사람부터 차례대로 자기보다 키가 큰 사람이 왼쪽에 몇 명이 있었는지 주어진다. i번째 수는 0보다 www.acmicpc.net 내 답안 N = int(input()) x = list(map(int, input().split())) d = [0] * N for i in range(N): for j in range(N): if x[i] == 0 and d[j] == 0: d[j] = i + 1# i 가 0 부터 시작하니 + 1을 해줌 break elif d[j] == 0: x[i] -= 1 print(' '.join(..

BOJ/Python 2022.06.28

백준 9095번 1, 2, 3 더하기 파이썬

https://www.acmicpc.net/problem/9095 9095번: 1, 2, 3 더하기 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다. www.acmicpc.net 내 답안 dp = [0, 1, 2, 4, 0, 0, 0, 0, 0, 0, 0] for i in range(int(input())): n = int(input()) if n == 1 or n == 2 or n == 3: print(dp[n]) else: for i in range(4, n + 1): dp[i] = dp[i - 1] + dp[i - 2] + dp[i - 3] print(dp[n]) 처음 접근할 때는 DFS로 돌려서 풀었다. DFS를 돌려보니 규칙이 보였고, 직접 n == 5 인 경우..

BOJ/Python 2022.06.27

백준 1065번 한수 파이썬

https://www.acmicpc.net/problem/1065 1065번: 한수 어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 www.acmicpc.net 내 답안 cnt = 99 N = input() if len(N) < 3: print(N) else: for i in range(100, int(N) + 1): if int(str(i)[0]) + int(str(i)[2]) == 2 * int(str(i)[1]): cnt += 1 else: continue print(cnt) 처음 이 문제를 봤을 때 생각했던 건 1. 1부터 99까지는 모두 한수이다. ..

BOJ/Python 2022.06.26

백준 7785번 회사에 있는 사람 파이썬

https://www.acmicpc.net/problem/7785 7785번: 회사에 있는 사람 첫째 줄에 로그에 기록된 출입 기록의 수 n이 주어진다. (2 ≤ n ≤ 106) 다음 n개의 줄에는 출입 기록이 순서대로 주어지며, 각 사람의 이름이 주어지고 "enter"나 "leave"가 주어진다. "enter"인 경우는 www.acmicpc.net 내 답안 (PyPy3) import sys input = sys.stdin.readline emp = [] N = int(input()) for i in range(N): x, y = input().split() if y == 'enter': emp.append(x) else: emp.remove(x) emp.sort(reverse = True) for i ..

BOJ/Python 2022.06.06

백준 4673번 셀프 넘버 파이썬

https://www.acmicpc.net/problem/4673 4673번: 셀프 넘버 셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때, www.acmicpc.net 내 답안 All = set(i for i in range(1, 10001)) S = set() for i in range(1, 10001): for j in str(i): i += int(j) S.add(i) for i in sorted(All - S): print(i) set 연산을 이용해서 1부터 10000까지의 집합에서 생성자가 있는 집합을 ..

BOJ/Python 2022.04.27

백준 1912번 연속합 파이썬

https://www.acmicpc.net/problem/1912 1912번: 연속합 첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다. www.acmicpc.net 내 답안 N = int(input()) x = list(map(int, input().split())) for i in range(1, N): x[i] = max(x[i], x[i] + x[i - 1]) print(max(x)) 사실 처음에 코드 짤 때는 N = int(input()) x = list(map(int, input().split())) dp = [0] * N for i in range(1): f..

BOJ/Python 2022.04.22

백준 11399번 ATM 파이썬

https://www.acmicpc.net/problem/11399 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net 내 답안 N = int(input()) p = sorted(list(map(int, input().split()))) result = 0 while N != 0: result += p[len(p)-N] * N N -= 1 print(result) 인출이 가장 빠르게 되는 사람 순으로 정렬을 하는 게 핵심 아이디어이다. 예제로 주어진 문제를 풀어본다면 1 1+2 1+2+3 1+2+3+3 1+2+3+3+4 이런 식으로 나타낼 수 ..

BOJ/Python 2022.04.17
반응형
목차(index)