Algorithm
-
[프로그래머스/Python] 스택/큐 level 2. 탑Algorithm/Programmers codes 2020. 1. 31. 00:47
스택/큐(Stack/Queue) 출체빈도 보통 | 평균 점수 높음 LIFO, FIFO, push & pop! 스택과 큐를 이용해서 문제를 풀어보세요. 문제 1. 탑 문제 설명 수평 직선에 탑 N대를 세웠습니다. 모든 탑의 꼭대기에는 신호를 송/수신하는 장치를 설치했습니다. 발사한 신호는 신호를 보낸 탑보다 높은 탑에서만 수신합니다. 또한, 한 번 수신된 신호는 다른 탑으로 송신되지 않습니다. 예를 들어 높이가 6, 9, 5, 7, 4인 다섯 탑이 왼쪽으로 동시에 레이저 신호를 발사합니다. 그러면, 탑은 다음과 같이 신호를 주고받습니다. 높이가 4인 다섯 번째 탑에서 발사한 신호는 높이가 7인 네 번째 탑이 수신하고, 높이가 7인 네 번째 탑의 신호는 높이가 9인 두 번째 탑이, 높이가 5인 세 번째 탑의..
-
[프로그래머스/Python] 해시 level 3. 베스트앨범Algorithm/Programmers codes 2020. 1. 30. 17:39
해시(Hash) 출체빈도 높음 | 평균 점수 보통 해시는 Key-value쌍으로 데이터를 저장하는 자료구조입니다. 문제 4. 베스트앨범 문제 설명 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가 많이 재생된 장르를 먼저 수록합니다. 장르 내에서 많이 재생된 노래를 먼저 수록합니다. 장르 내에서 재생 횟수가 같은 노래 중에서는 고유 번호가 낮은 노래를 먼저 수록합니다. 노래의 장르를 나타내는 문자열 배열 genres와 노래별 재생 횟수를 나타내는 정수 배열 plays가 주어질 때, 베스트 앨범에 들어갈 노래의 고유 번호를 순서대로 return 하도록 solution 함수..
-
[프로그래머스/Python] 해시 level 2. 위장Algorithm/Programmers codes 2020. 1. 29. 20:33
해시(Hash) 출체빈도 높음 | 평균 점수 보통 해시는 Key-value쌍으로 데이터를 저장하는 자료구조입니다. 문제 3. 위장 문제 설명 스파이들은 매일 다른 옷을 조합하여 입어 자신을 위장합니다. 예를 들어 스파이가 가진 옷이 아래와 같고 오늘 스파이가 동그란 안경, 긴 코트, 파란색 티셔츠를 입었다면 다음날은 청바지를 추가로 입거나 동그란 안경 대신 검정 선글라스를 착용하거나 해야 합니다. 스파이가 가진 의상들이 담긴 2차원 배열 clothes가 주어질 때 서로 다른 옷의 조합의 수를 return 하도록 solution 함수를 작성해주세요. 제한사항 clothes의 각 행은 [의상의 이름, 의상의 종류]로 이루어져 있습니다. 스파이가 가진 의상의 수는 1개 이상 30개 이하입니다.같은 이름을 가진..
-
[프로그래머스/Python] 해시 level 2. 전화번호 목록Algorithm/Programmers codes 2020. 1. 29. 17:16
해시(Hash) 출체빈도 높음 | 평균 점수 보통 해시는 Key-value쌍으로 데이터를 저장하는 자료구조입니다. 문제 2. 전화번호 목록 문제 설명 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조대 : 119박준영 : 97 674 223지영석 : 11 9552 4421 전화번호부에 적힌 전화번호를 담은 배열 phone_book 이 solution 함수의 매개변수로 주어질 때, 어떤 번호가 다른 번호의 접두어인 경우가 있으면 false를 그렇지 않으면 true를 return 하도록 solution 함수를 작성 제한 사항 phone_book의 길이는 1 이상 1,000,0..
-
[프로그래머스/Python] 해시 level 1. 완주하지 못한 선수Algorithm/Programmers codes 2020. 1. 29. 16:01
백준 알고리즘으로 C언어 공부를 하고 있는데 파이썬도 틈틈이 해보기 위해 프로그래머스를 시작하기로 했다. 일단 첫 문제부터 푸는 것 자체는 어렵지 않은데 '효율성' 이 친구가 아주 어렵다. 정확성은 맞는데 효율성이 0점이라 결국 코드를 계속 고치고 고치고 다른 분들의 코드를 봐야 했다. 후. .. 해시(Hash) 출체빈도 높음 | 평균 점수 보통 해시는 Key-value쌍으로 데이터를 저장하는 자료구조입니다. 문제 1. 완주하지 못한 선수 문제 설명 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지..
-
[Algorithm] 동적계획법 (Dynamic Programming)Algorithm/Programmers codes 2020. 1. 25. 21:32
알고리즘 문제를 풀다 보면 동적계획법에 관련된 문제들을 많이 볼 수 있다. 옛날에 알고리즘 스터디할 때 하긴 했는데 제대로 이론을 안하고 문제만 풀어서 그런지 오랜만에 코딩을 하니까 기억이 안나서 다시 공부하고 정리를 하려 한다. 다이내믹 프로그래밍, 동적계획법 (Dynamic Programming, DP) 하나의 문제는 한 번만 풀도록 하는 알고리즘, 한번 푼 것을 여러 번 다시 풀지 않는 효율적인 알고리즘 크고 어려운 문제가 있을 때 큰 문제를 잘게 나누어 해결한 뒤에 전체의 답을 구하는 방법 최적화 문제를 해결하는 데 유용함 최적화 문제 : 문제의 답이 여러 개 존재하며 가장 좋은 결과를 찾아야 하는 문제 (ex. 최단경로 문제) 다이내믹 프로그래밍을 사용하는 이유 분할-정복 기법(divide-co..
-
버블 정렬(Bubble Sort) + C로 작성한 코드Algorithm/Programmers codes 2020. 1. 14. 20:31
Procedure - 인접한 두 데이터를 SWAP하는 정렬 - 비교하고 교환하는 과정이 왼쪽에서부터 오른쪽으로 진행된다. - 붙어있는 데이터를 비교하는 게 거품같다고 해서 버블 정렬이라고 한다. - stable sort이다. Example - [ 5, 3, 8, 1, 2, 7] 이라는 배열 A가 있다고 하자. - 첫 번째 반복의 절차는 아래 그림과 같다. - 첫 번째 정렬이 끝나면 가장 오른쪽에 가장 큰 수인 '8'이 위치한다. - 이런 식으로 총 5번을 반복하면 [ 1, 2, 3, 5, 7, 8 ]로 정렬이 된다. 장점 - 구현이 간단하다 단점 - 어떤 데이터가 정렬 후의 위치와 같게 있다 하더라도 근접한 데이터에 따라 이동할 수 있다 (비효율적) - 한 데이터를 오른쪽으로 이동시키기 위해 모든 데이터..