본문 바로가기

알고리즘 공부

(207)
[백준 파이썬] #10815: 숫자 카드 https://www.acmicpc.net/problem/10815 10815번: 숫자 카드 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net [정답] // 생략 저번 #1920 문제와 이번 문제는 출력 방식 제외하고는 똑같은 문제이다. 저번 #1920 문제는 책을 보고 풀었다면 이번 문제는 이진 탐색 방법 복습 겸 혼자 생각하면서 문제를 풀었다. 자세한 풀이는 #1920 문제를 참고하시면 될 것 같다. https://heewon9809.tistory.com/205 [백준 파이썬] #1920: 수 찾기 ht..
[백준 파이썬] #1920: 수 찾기 https://www.acmicpc.net/problem/1920 1920번: 수 찾기 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들 www.acmicpc.net [오답] → 시간초과 다른 블로그들을 참고해보니 "이진 탐색(이진 검색)" 으로 풀어야 시간초과가 나지 않는다는 것을 알았다. 나는 알고리즘 수업시간에 배운 p.1-281~283을 참고하여 이 문제를 풀었다. [정답] 1. 리스트 A의 길이인 N과 검색 대상인 리스트 A를 오름차순 정렬하여 정의한다. 2. 리스트 num_list의 길이인 M과 찾고자..
[백준 파이썬] #2530: 인공지능 시계 www.acmicpc.net/problem/2530 2530번: 인공지능 시계 첫째 줄에 종료되는 시각의 시, 분, 초을 공백을 사이에 두고 출력한다. (단, 시는 0부터 23까지의 정수이며, 분, 초는 0부터 59까지의 정수이다. 디지털 시계는 23시 59분 59초에서 1초가 지나면 0시 0 www.acmicpc.net [정답] 1. 훈제 오리 구이를 시작하는 시각을 받아 A,B,C에 넣어준다. 2. 오븐구이를 하는 데 필요한 시간을 D에 넣어준다. ( A B C D = 23 30 0 4000이라 가정하고 문제를 설명하겠다. ) 3. 먼저 해당하는 시,분,초에 해당하는 값들을 더해준다. - C+=D ex) C=0 D=4000 → C=4000 - B+=C//60 ex) B=30 C=4000 → B=96 ..
[백준 파이썬] #3046: R2 www.acmicpc.net/problem/3046 3046번: R2 두 숫자 R1과 R2가 있을 때, 두 수의 평균 S는 (R1+R2)/2와 같다. 상근이는 정인이 생일 선물로 두 숫자 R1과 R2를 주려고 한다. 생일 파티에서 상근이는 정인이에게 이 두 숫자를 말해주고, 정인이는 www.acmicpc.net [정답] 1. R1, S를 int형태로 입력받는다. 2. R2=S*2-R1이니까 R2를 출력한다. 두 숫자 R1과 R2가 있을 때, 두 수의 평균 S는 (R1+R2)/2와 같다. S=(R1+R2)/2 이므로 R2=S*2-R1이다. 쉬운 것부터 풀자 라는 생각으로 백준 > 문제집 > Python 배우기(1~50)을 풀어보았는데,, 이건 프로그래밍이 아닌 그냥 수학이었다,,
[백준 파이썬] #1225: 이상한 곱셈 www.acmicpc.net/problem/1225 1225번: 이상한 곱셈 첫째 줄에 A와 B가 주어진다. 주어지는 두 수는 모두 10,000자리를 넘지 않는다. www.acmicpc.net [오답1] → 시간초과 [오답2] → 시간초과 쉬운 문제라고 생각하고 풀었는데 계속 시간 초과가 나와서 당황스러웠다,, [정답] 1. 두 수를 입력받아 list형태로 A,B를 정의한다. ex) A=['1','2','3'], B=['4','5'] 2. A와 B, 리스트의 문자열을 int형태로 변환해준다. ex) A=[1,2,3], B=[4,5] 3. A의 sum과 B의 sum을 곱하여 출력한다. 3번 부분을 생각해내어 문제를 다시 풀었더니 시간초과가 나지 않았다. - 시간초과가 난 오답의 경우, 123 45를 문자열..
[백준 파이썬] #15654: N과 M(5) www.acmicpc.net/problem/15654 15654번: N과 M (5) N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열 www.acmicpc.net [정답] 1. 두 수를 입력받아 N,M을 정의한다. 2. 중복을 제외한 순열에 사용될 N개의 수를 리스트형태로 num_list에 넣어준다. 3. 순열은 사전 순으로 증가하는 순서대로 출력해야 하므로 sort() 함수를 사용하여 오름차순 정렬을 해준다. 3. itertools 모듈의 permutations() 함수를 사용하여 중복을 제외한 순열을 구한다. 4. for문을 돌면서 중복을 제외한 순열을 차례..
[백준 파이썬] #15652: N과 M(4) www.acmicpc.net/problem/15652 15652번: N과 M (4) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net [정답] 1. 두 수를 입력받아 N,M을 정의한다. 2. 1부터 N까지의 자연수 중에서 고르는 문제니까 수 1~N을 list에 넣는다. 3. itertools 모듈의 combinations_with_replacement() 함수를 사용하여 중복 조합을 구한다. 4. for문을 돌면서 중복 조합을 차례대로 출력한다. 이 문제는 #15649:N과 M(1) & #15650:N과 M(2) & #15651:N과 M(3..
[백준 파이썬] #15651: N과 M(3) www.acmicpc.net/problem/15651 15651번: N과 M (3) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net [정답] 1. 두 수를 입력받아 N,M을 정의한다. 2. 1부터 N까지의 자연수 중에서 고르는 문제니까 수 1~N을 list에 넣는다. 3. itertools 모듈의 product() 함수를 사용하여 중복 순열을 구한다. ( 주의할 점: 이전 permutations() 함수와 combinations() 함수는 두 번째 파라미터에 repeat을 안 적어도 되었지만, product() 함수의 경우 repeat를 ..