python, pyTorch/코딩테스트-파이썬 18

BOJ 설탕배달, 정수삼각형

1. BOJ 2839 설탕배달 https://www.acmicpc.net/problem/2839 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 N = int(input()) a = N//3 b = N//5 for i in range(N//5+1): if (N-5*b)%3==0: a = (N-5*b)//3 break else: b-=1 if b==-1: print(-1) else: print(a+b) cs 설명 3a + 5b = N이고, 이때 a+b이 최소가 되는 값을 구해야 한다. 최대가 되는 b를 구하고 b를 1씩 줄여가며 값을 찾는다. 2. BOJ 1932 정수삼각형 https://www.acmicpc.net/problem/1932 코드 1 2 3 4 5 6 7 8 9 10 11 1..

BOJ 가장긴증가하는부분수열, RGB거리

DP 문제가 유독 풀기가 힘들어서 이겨내기 위해 2문제를 골랐다. 1. BOJ 11053 (가장 긴 증가하는 부분 수열) 난이도 : 실버2 DP 중에 유명한 예시인 LIS 유형이다. https://www.acmicpc.net/problem/11053 문제 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이고, 길이는 4이다. 코드 1 2 3 4 5 6 7 8 9 10 N = int(input()) arr = list(map(int, input().split())) d = [1 for _ in range(N)..

프로그래머스 Lv1. 다트게임

문제 input : '1S2D*3T' 위와 같이 문자열로 입력된다. 1) 숫자는 0-10까지 가능하다. 나는 '10' 예외처리를 해주었다. 2) 숫자 다음에 오는 문자 S, D, T는 각각 현재 값의 1제곱, 2제곱, 2제곱을 의미한다. 3) S, D, T 다음에 오는 문자 *, # 에서 주의할 점이 있는데, #는 현재 값에 (-1)를 곱해주는 것이고, *는 현재 값과 이전 값에 2를 곱해주는 것이다. 특히 '*' 조건이 놓치지 쉽다. 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 def solution(dart): answer = [0] ans = 0 for i in range(len(dart)) : if 48

프로그래머스 Lv2. 주차 요금 계산

https://programmers.co.kr/learn/courses/30/lessons/92341?language=python3 코딩테스트 연습 - 주차 요금 계산 [180, 5000, 10, 600] ["05:34 5961 IN", "06:00 0000 IN", "06:34 0000 OUT", "07:59 5961 OUT", "07:59 0148 IN", "18:59 0000 IN", "19:09 0148 OUT", "22:59 5961 IN", "23:00 5961 OUT"] [14600, 34400, 5000] programmers.co.kr 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31..

BOJ 결혼식, 계단오르기

1. BOJ 5567 (결혼식) https://www.acmicpc.net/problem/5567 5567번: 결혼식 예제 1의 경우 2와 3은 상근이의 친구이다. 또, 3과 4는 친구이기 때문에, 4는 상근이의 친구의 친구이다. 5와 6은 친구도 아니고, 친구의 친구도 아니다. 따라서 2, 3, 4 3명의 친구를 결혼식에 초대 www.acmicpc.net 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 n = int(input()) m = int(input()) graph = [list(map(int, input().split())) for _ in range(m)] f1 = [] f2 = [] for i in range(m): if graph[i]..

프로그래머스 Lv1. 신규아이디추천

생각보다 코딩테스트를 볼 때 문자열 구현 문제가 많이 나온다..(아마 금융권 시험이었던 것 같기도 하다..) 1. (프로그래머스) 신규 아이디 추천 https://programmers.co.kr/learn/courses/30/lessons/72410 코딩테스트 연습 - 신규 아이디 추천 카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로 programmers.co.kr regex 모듈 사용하기 (참고) 더보기 reference : https://ihp001.tistory.com/142 [Python] 파이썬 정규표현식(Regex) 공부하기 - 메타 문자, re 모듈 및 내장..

DFS BFS 모음 (BOJ 1260, 11725, 2667)

DFS와 BFS는 이진탐색보다 유독 문제에서 마주쳤을 때 당황스러웠다. DFS나 BFS로 풀 수 있는 문제를 모아서 리뷰해봤다. 1. DFS와 BFS DFS와 BFS 복습을 위한 문제^^* https://www.acmicpc.net/problem/1260 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 ..

BOJ 3273 두 수의 합

https://www.acmicpc.net/problem/3273 3273번: 두 수의 합 n개의 서로 다른 양의 정수 a1, a2, ..., an으로 이루어진 수열이 있다. ai의 값은 1보다 크거나 같고, 1000000보다 작거나 같은 자연수이다. 자연수 x가 주어졌을 때, ai + aj = x (1 ≤ i < j ≤ n)을 만족하는 www.acmicpc.net 문제를 마주쳤을 때 사고의 흐름. 1. 수열을 정렬한다. sort() 써서. 2. binary search를 써서 해볼까? n(수열의 크기)범위를 보니 이중for문 쓰면 시간초과 나오겠다.. 3. sort 한 후, 수열의 각 요소(a_i)를 차례대로 훑으면서 수열에서 X-a_i (=target) 에 해당하는 값이 있는지 찾아야 한다. 4. b..