알고리즘/프로그래머스
-
[프로그래머스 / Python] 더 맵게 | 초코더알고리즘/프로그래머스 2020. 8. 29. 02:29
https://programmers.co.kr/learn/courses/30/lessons/42626 코딩테스트 연습 - 더 맵게 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같�� programmers.co.kr 문제 스코빌지수 리스트가 주어지면 모든 스코빌지수를 K이상으로 만들어야함. 스코빌지수는 가장작은스코빌지수+(두번째로작은스코빌지수*2) 수식을 사용해서 K이상으로 만든다. 풀이 1. while문을 사용해서 가장작은 스코빌지수가 K보다 작을 경우 계속반복 1-1. 만약 스코빌지수가 1개 남았는데 그 1개가 K보다 작을경우 -1을 리턴 1-2. 스코빌..
-
[프로그래머스 / Python] 다리를 지나는 트럭 | 초코더알고리즘/프로그래머스 2020. 8. 21. 15:01
https://programmers.co.kr/learn/courses/30/lessons/42583 코딩테스트 연습 - 다리를 지나는 트럭 트럭 여러 대가 강을 가로지르는 일 차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 트럭은 1초에 1만큼 움직이며, 다리 길이�� programmers.co.kr 문제 다리길이, 다리가버틸수있는무게, 트럭여러대리스트가 주어지면 총 몇초뒤에 모든 트럭이 지날수있는지 구하는문제. 단, 트럭은 1초에 1만큼 움직일 수 있다. 접근법 처음에 문제 예시에 설명하는것처럼 원래트럭리스트, 지나고있는트럭리스트를 따로 두고 시간을 더해가면서 구하려고 했는데 그럴경우에 각 트럭이 길이를 얼만큼 지났는지 구하는게 굉장히 ..
-
[프로그래머스 / Python] 위장 | 초코더알고리즘/프로그래머스 2020. 8. 21. 01:35
https://programmers.co.kr/learn/courses/30/lessons/42578 코딩테스트 연습 - 위장 programmers.co.kr 문제 의상의이름,의상의종류이 주어지면 가짓수를 구하는 문제. 단, 적어도 하나라도 걸쳐야함. 그리고 의상의 이름이 같은 경우는 없으므로 우리는 의상의 종류만 고려해주면된다. 접근법 의상 종류의 수를 각각 곱해주면 되는 것까지는 다들 쉽게 생각하셨을것 같습니다. 하지만 만약 모자1,상의2,하의3이라면 (모자1,상의1),(모자1,하의1) 이런식으로 한가지씩 빠졌을 경우 어떻게 고려해주어야할지 고민을 많이했습니다 ㅜ 생각보다 매우 단순해서 조금 허무했어용.. 각 가지수에 + 1을 해주어서 곱하면 됩니다! 즉 (모자1,모자0),(상의1,상의2,상의0),(..
-
[프로그래머스 / Python] 전화번호 목록 | 초코더알고리즘/프로그래머스 2020. 8. 19. 17:33
https://programmers.co.kr/learn/courses/30/lessons/42577 코딩테스트 연습 - 전화번호 목록 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조�� programmers.co.kr 문제 전화번호부가 주어지면 한 번호가 다른 번호의 접두어가 있는지 확인하고 있으면 False 없으면 True를 출력하는 문제. 접근법 1. 2중 for문을 써서 전화번호부 맨앞의 요소부터 서로서로 비교해준다. 1-1. 만약 비교하려는 전화번호가 다음 전화번호보다 길이가 짧을경우 if 비교하려는 전화번호 == 다음전화번호[0:len(비교하려는전화번호)]: ..
-
[프로그래머스 / Python] 기능개발 | 초코더알고리즘/프로그래머스 2020. 8. 18. 17:56
https://programmers.co.kr/learn/courses/30/lessons/42586 코딩테스트 연습 - 기능개발 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 �� programmers.co.kr 문제 작업진도와 작업속도가 주어질 경우 각 배포마다 몇개의 기능이 수행되는지 구하는 함수 접근법 1. 각 작업이 완료되기까지 몇일이 걸리는지를 days리스트를 구해줌 1-1. 각작업의 속도를 계속 더해주면서 한번 더할 때마다 cnt도 증가시켜줌 1-2. 100보다 커지는 지점의 cnt를 저장해주면 그것이 완료되는 날짜 2. 예제처럼 작업진도와 속도가..
-
[프로그래머스 / Python] 주식가격 | 초코더알고리즘/프로그래머스 2020. 8. 18. 16:42
https://programmers.co.kr/learn/courses/30/lessons/42584 코딩테스트 연습 - 주식가격 초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요. 제한사항 prices의 각 가격은 1 이상 10,00 programmers.co.kr 문제 주식가격이 담긴 배열 prices가 주어지면 가격이 떨어지지 않은 기간이 몇초인지를 알려주는 함수를 짜야함. 문제가 스택/덱 으로 분류되어 있었는데 그냥 이중for문으로 구현함. 접근법 1. i번째 원소와 i번째 이후 원소들을 비교하며 i번째 원소보다 크거나 같으면 cnt를 증가시켜준다. 2. i번째 원소보다 작아지..
-
[프로그래머스 / Python] 올바른 괄호 | 초코더알고리즘/프로그래머스 2020. 8. 18. 15:52
def solution(s): stack=[] #s문자열의 원소들을 검사해봄 for string in s: #stack이 비어있을 때 / 여는괄호가나오면추가, 닫는괄호가나오면 False if len(stack)==0: if string=='(': stack.append(string) else: return False #stack이 비어있지않을때 / 여는괄호가나오면추가, 닫는괄호가 나오면 pop elif string=='(': stack.append(string) elif string==')': stack.pop() #검사가 끝난후 stack이 비어있는면 짝이 잘맞는것 if len(stack)==0: return True return False https://programmers.co.kr/learn/co..
-
[프로그래머스 / Python] 시저 암호 | 초코더알고리즘/프로그래머스 2020. 1. 19. 19:51
문제 설명 어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 합니다. 예를 들어 AB는 1만큼 밀면 BC가 되고, 3만큼 밀면 DE가 됩니다. z는 1만큼 밀면 a가 됩니다. 문자열 s와 거리 n을 입력받아 s를 n만큼 민 암호문을 만드는 함수, solution을 완성해 보세요. 제한 사항 -공백은 아무리 밀어도 공백입니다. -s는 알파벳 소문자, 대문자, 공백으로만 이루어져 있습니다. -s의 길이는 8000이하입니다. -n은 1 이상, 25이하인 자연수입니다. 입출력 예 s n result AB 1 BC z 1 a a B z 4 e F d 접근법 알파벳 a-z까지, A-Z까지 각각 리스트에 저장합니다. 만약 ' '(공백문자)라면 리스트 s_n에 ' ..