프로그래밍/백준 201

코딩테스트 - 알고리즘 공부 순서

- 시작에 앞서 코딩 테스트 준비는 단기간에 완성되지는 않는다. 꾸준한 학습과 노력이 있어야 좋은 결과를 얻을 수 있다. ​ 1. 자주 쓰는 알고리즘 개념은 항상 알아볼 수 있게 정리해놓아야 한다. - 워낙 많은 알고리즘 개념이 존재하기에 이전에 학습했던 내용도 이후에 잊을 수도 있다. ​ 2. 각각의 회사나 집단에서 원하는 형식으로 준비해야 한다. - 코딩 테스트는 보통 대기업에서 많이 시행하곤 한다. 각각 개발자인지 데이터 분석가인지 등의 상황에 따라 문제가 다를 수 있으니 사전 조사를 통해 해당 집단에서 원하는 형식의 난이도와 유형으로 준비해야 한다. ​ 3. 가장 좋은 방법은 꾸준히 하루에 1문제씩 푸는 것이다. - 취업 직전이라 바로 코딩 테스트를 단기간에 준비할 수는 있지만, 많은 경험을 하지..

[알고리즘] 백준 1094 파이썬 - 막대기

1094번: 막대기 지민이는 길이가 64cm인 막대를 가지고 있다. 어느 날, 그는 길이가 Xcm인 막대가 가지고 싶어졌다. 지민이는 원래 가지고 있던 막대를 더 작은 막대로 자른다음에, 풀로 붙여서 길이가 Xcm인 막대 www.acmicpc.net 문제 지민이는 길이가 64cm인 막대를 가지고 있다. 어느 날, 그는 길이가 Xcm인 막대가 가지고 싶어졌다. 지민이는 원래 가지고 있던 막대를 더 작은 막대로 자른다음에, 풀로 붙여서 길이가 Xcm인 막대를 만들려고 한다. 막대를 자르는 가장 쉬운 방법은 절반으로 자르는 것이다. 지민이는 아래와 같은 과정을 거쳐서 막대를 자르려고 한다. 지민이가 가지고 있는 막대의 길이를 모두 더한다. 처음에는 64cm 막대 하나만 가지고 있다. 이때, 합이 X보다 크다면..

[알고리즘] 백준 25496 파이썬 - 장신구 명장 임스

25496번: 장신구 명장 임스 첫 번째 줄에 정수 $P$와 정수 $N$이 공백으로 구분되어 주어진다. ($1 \le P \le 200$, $1 \le N \le 1\,000$) 두 번째 줄에는 정수 $A_1, A_2, \dots, A_N$이 공백으로 구분되어 주어진다. ($1 \le A_i \le 200$) www.acmicpc.net 문제 메이플스토리에는 전문 기술이라는 제작 시스템이 있다. 전문 기술은 특정량의 피로도가 쌓이는 대신 다양한 장비 및 비약을 제작할 수 있는 시스템이다. 장신구 명장인 임스는 어떻게 하면 더 효율적으로 많은 장신구를 제작할 수 있을지 고민에 빠졌다. 임스가 만들 수 있는 장신구는 N개가 있고, 각각의 장신구를 만들면 A만큼의 피로도가 누적된다. 피로도가 200미만인 경우..

[알고리즘] 백준 20115 파이썬 - 에너지 드링크

20115번: 에너지 드링크 페인은 에너지 드링크를 좋아하는 회사원이다. 에너지 드링크는 카페인, 아르기닌, 타우린, 나이아신 등의 성분이 들어있어 피로 회복에 도움을 주는 에너지 보충 음료수이다. 야근을 마치고 한 www.acmicpc.net 문제 페인은 에너지 드링크를 좋아하는 회사원이다. 에너지 드링크는 카페인, 아르기닌, 타우린, 나이아신 등의 성분이 들어있어 피로 회복에 도움을 주는 에너지 보충 음료수이다. 야근을 마치고 한밤중에 퇴근하니 벌써 새벽 1시. 하지만 주말은 아직 멀었고, 다음 날에도 정시에 출근해야 하는 페인은 오늘도 에너지 드링크를 찾는다. 반복되는 야근에 지친 나머지, 평소보다 더 많은 에너지와 피로 회복이 필요했던 페인은 집에 있던 에너지 드링크들을 한 데 합쳐서, 하나의 에..

[알고리즘] 백준 15720 파이썬 - 카우버거

15720번: 카우버거 첫째 줄에는 주문한 버거의 개수 B, 사이드 메뉴의 개수 C, 음료의 개수 D가 공백을 사이에 두고 순서대로 주어진다. (1 ≤ B, C, D ≤ 1,000) 둘째 줄에는 각 버거의 가격이 공백을 사이에 두고 주어진 www.acmicpc.net 문제 윤진이는 이번에 카우버거 알바생으로 뽑히게 되었다. 그녀는 카우버거를 평소에 이용하면서 들었던 의문점 한가지가 있었다. "카우버거에는 왜 세트 메뉴에 대한 할인이 존재하지 않는가?" 따라서 윤진이의 아이디어로 카우버거에 세트 할인을 도입하고자 한다. 세트 메뉴는 버거 1개, 사이드 메뉴 1개, 음료 1개를 선택 할 경우 각각의 제품에 대해서 10%의 세트 할인을 적용하는 방식으로 진행된다. 하지만 카우버거 점주는 POS기의 소프트웨어가..

[알고리즘] 백준 1418 파이썬 - K-세준수

1418번: K-세준수 첫째 줄에 N, 둘째 줄에 K가 주어진다. N은 100,000보다 작거나 같은 자연수이고, K는 100보다 작거나 같은 자연수이다. www.acmicpc.net 문제 오세준은 어떤 자연수의 소인수중 최댓값이 K보다 크지 않을때 그 수를 K-세준수라고 부른다. N보다 작거나 같은 자연수 중에 K-세준수가 총 몇 개인지 구하는 프로그램을 작성하시오. 문제풀이 n=int(input()) k=int(input()) #01 s = [0 for i in range(n+1)] for i in range(2,n+1): if s[i] == 0: for j in range(i,n+1,i): if j%i == 0: s[j] = max(s[j],i) #02 ans=0 for i in s: if i

[알고리즘] 백준 19699 파이썬 - 소-난다!

19699번: 소-난다! 지난 번 헛간 청약의 당첨우(牛)가 발표됐다. 청약에 당첨된 소들은 날아갈 듯이 기뻐하다가 진짜로 하늘을 날았다. 하지만 이후로 소들은 날 수 없었다. 그러던 어느 날, 꿀벌에게 쏘이면 잠깐 www.acmicpc.net 문제 지난 번 헛간 청약의 당첨우(牛)가 발표됐다. 청약에 당첨된 소들은 날아갈 듯이 기뻐하다가 진짜로 하늘을 날았다. 하지만 이후로 소들은 날 수 없었다. 그러던 어느 날, 꿀벌에게 쏘이면 잠깐 하늘을 날 수 있다는 사실을 깨달았다. 이 사실이 퍼지자 소들은 다시 자유롭게 하늘을 날기 시작했다. 소들이 하늘을 날며 우(牛)통사고가 빈번해지자, 농부 존은 소들이 하늘을 나는 것에 제한을 두었다. 소들은 항의했지만 소들의 항의는 받아들여지지 않았다. 농장에는 N마리..

[알고리즘] 백준 9417 파이썬 - 최대 GCD

9417번: 최대 GCD 첫째 줄에 테스트 케이스의 개수 N (1 < N < 100)이 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 양의 정수 M (1 < M < 100)개가 주어진다. 모든 수는 -231보다 크거나 같고, 231 -1보다 작거나 www.acmicpc.net 문제 정수 M개가 주어졌을 때, 모든 두 수의 쌍 중에서 가장 큰 최대공약수 찾는 프로그램을 작성하시오. 문제풀이 #01 def gcd(a,b): while b: mod=b b=a%b a=mod return a for _ in range(int(input())): #02 x=list(map(int,input().split())) ans=0 for i in range(len(x)): for j in range(len(x))..

[알고리즘] 백준 11502 파이썬 - 세 개의 소수 문제

11502번: 세 개의 소수 문제 정수론(수학)에서, 세 개의 소수 문제(3-primes problem) 는 다음과 같은 추측을 말한다. '5보다 큰 임의의 홀수는 정확히 세 개의 소수들의 합으로 나타낼 수 있다. 물론 하나의 소수를 여러 번 더할 www.acmicpc.net 문제 정수론(수학)에서, 세 개의 소수 문제(3-primes problem) 는 다음과 같은 추측을 말한다. '5보다 큰 임의의 홀수는 정확히 세 개의 소수들의 합으로 나타낼 수 있다. 물론 하나의 소수를 여러 번 더할 수도 있다.' 예를 들면, 7 = 2 + 2 + 3 11 = 2 + 2 + 7 25 = 7 + 7 + 11 5보다 큰 임의의 홀수를 입력받아서, 그 홀수가 어떻게 세 소수의 합으로 표현될 수 있는지 (또는 불가능한지..

[알고리즘] 백준 5347 파이썬 - LCM

5347번: LCM 첫째 줄에 테스트 케이스의 개수 n이 주어진다. 다음 n개 줄에는 a와 b가 주어진다. a와 b사이에는 공백이 하나 이상 있다. 두 수는 백만보다 작거나 같은 자연수이다. www.acmicpc.net 문제 두 수 a와 b가 주어졌을 때, a와 b의 최소 공배수를 구하는 프로그램을 작성하시오. 문제풀이 n=int(input()) #01 def gcd(a,b): while b: mod=b b=a%b a=mod return a for _ in range(n): #02 a,b=map(int,input().split()) print(a*b//gcd(a,b)) - #01 : 최소공배수를 구하기 위해 최대공약수를 먼저 구한다. 간단한 개념인 유클리드 호제법을 이용하여 gcd를 구한 후 return..