본문 바로가기
반응형

Algorithm/Programmers10

[프로그래머스] 코딩테스트 고득점 Kit > 가장 큰 수 # 문제 # 문제 접근 주어진 정수를 이어 붙여서 가장 큰 수를 만들어 내야 한다. 얼핏 생각하기엔 가장 큰 수부터 이어붙이면 되지 않을까 라는 생각이 들지만 그렇게 하면 안된다. 예를 들어, 6과 10으로 만들 수 있는 가장 큰 수는 106이 아닌 610 이기 때문이다. 두 수를 이어 붙일 때 두 수의 크기를 비교하는 것이 아닌, 두 수를 이어붙였을 때 큰 수가 되어야 큰 수로 판별해야 되는 것이다. 예를 들어 a, b 두 수가 있다면 ab 와 ba를 비교한다. 그리고 ba가 더 크다면 리스트를 b, a로 정렬한다. 입력 예제인 [6, 10, 2] 로 예를 들어 보겠다. 1. 6 vs 10 : 610 > 106 이므로 [6, 10, 2]로 정렬된다. 2. 10 vs 2 : 102 < 210 이므로 [6.. 2020. 3. 7.
[프로그래머스] 코딩테스트 고득점 Kit > K번째수 # 문제 # 문제 접근 문제 설명이 곧 풀이 방법이다. 문제만 잘 읽으면 되고, commads 에서 i, j, k를 획득하여 입력 array를 자르고 정렬하는 것이 주 포인트이다. # 문제 풀이 문제 설명에 문제를 푸는 방법이 전부 나와있다. i, j, k의 의미에 대해서 이해를 한다면 어렵지 않게 문제를 풀 수 있다. 1. 원본 입력 array를 보존해야 한다. 2. commands를 순회하면서 현재의 i, j, k를 구한다. 3. 원본 array를 i~j 까지 슬라이싱하고 정렬한다. 4. 위에서 얻은 리스트의 k번째 수를 결과 리스트에 담는다. # 코드 작성 def solution(array, commands): answer = [] for command in commands : // 현재 comma.. 2020. 3. 7.
[프로그래머스] 코딩테스트 고득점 Kit > 베스트앨범 # 문제 # 문제 접근 정답을 도출하기 위해 필요한 것은 가장 많이 재생 된 장르의 순서 / 장르별로 포함 된 노래의 재생 횟수 ,노래의 고유 번호 가장 많이 재생 된 장르의 순서를 알기 위해선, "장르" : "총 재생된 횟수" 가 필요하다. 장르별로 포함 된 노래의 재생 횟수를 알기 위해선, "장르" : "노래의 재생 횟수 리스트" 가 필요하다. 장르별로 포함 된 노래의 고유 번호를 알기 위해선, "장르" : "노래 고유 번호 리스트" 가 필요하다. 위를 딕셔너리로 구조화 시키면, { "장르" : { "총 재생 횟수" : N, "노래 리스트" : (재생 횟수, 고유 번호) } } 와 같이 만들 수 있다. # 문제 풀이 1. 위에서 구조화한 딕셔너리를 만들기 위해 빈 딕셔너리를 생성한다. 2. genre.. 2019. 11. 5.
[프로그래머스] 코딩테스트 고득점 Kit > 위장 # 문제 # 문제 접근 문제를 읽고 처음 입출력 예를 보고 나면 의상의 종류와 의상들을 묶어서 가능한 조합들을 모두 구하면 되겠다고 생각할 수 있다. 하지만 조금만 생각해보면 의상의 종류와 그 종류가 몇 개의 의상이 있는지만 알면 경우의 수를 구할 수 있다. 또한 같은 이름을 가진 의상이 존재하지 않기 때문에 별다른 예외처리도 필요 없음을 짐작할 수 있다. 따라서 의상의 종류가 "키"가 되고 의상의 개수가 "값"이 되는 딕셔너리를 생성하여 문제를 풀 수 있을 것이다. # 문제 풀이 1. "의상의 종류 : 의상의 개수" 의 구조를 가진 딕셔너리를 생성한다. 2. clothes 리스트를 순회하며 딕셔너리에 저장한다. 3. 딕셔너리를 순회하며 경우의 수를 구하여 반환한다. 4. 경우의 수를 구하는 것은 수학적.. 2019. 11. 5.