알고리즘 풀이/프로그래머스 109

[고득점 KIT] 프린터 cpp

문제 인쇄 대기목록의 가장 앞에있는 문서를 꺼내고 나머지 인쇄 대기목록에서 중요도가 높은 문서가 있다면 맨 뒤에넣고 중요도가 높은 문서를 출력한다. 만약 중요도가 높은 문서가 없다면 그대로 출력한다. 이때 내가 원하는 문서가 몇 번째로 출력되는지 구하라 입력 문서의 중요도가 담긴 배열과 내가 뽑고자 하는 문서가 몇 번째에 있는지 입력된다. 출력 내가 출력하고자 하는 문서가 몇 번째로 출력되는지 구하라. 접근 각 문서에는 중요도가 있고 중요도가 높은 문서가 먼저 출력이된다. 여기서 본인이 원하는 문서가 몇 번째로 출력되는지 구해야한다. 그래서 출력되는 문서들이 몇 번째 있던 문서인지 알아야했다. 그리고 출력되는 문서가 현재 대기목록 중 가장 큰 문서인지도 확인해야했다. 따라서 큐에 문서의 중요도와 몇 번째..

[고득점 KIT] 다리를 지나는 트럭 cpp

문제 트럭 여러 대가 다리를 지나려고 한다. 다리는 길이와 한 번에 견딜 수 있는 무게를 갖고있다. 트럭은 1초에 1만큼 이동을 하고 다리가 견딜 수 있는 무게를 초과해서 트럭이 들어올 수 없다. 다리의 길이, 무게와 트럭들의 무게가 입력으로 들어올 때 모든 트럭이 순서대로 다리를 건너는 최소시간을 출력하라. 입력 다리길이, 다리무게, 트럭들의 무게가 입력된다. 출력 트럭이 다리를 모두 건너는 최소시간을 출력한다. 접근 트럭을 이동할 때마다 현재 다리 위에있는 트럭들의 무게와 트럭을 다리 길이만큼 이동시켜야 했다. 현재 무게를 측정하는 것은 어렵지 않았지만 트럭의 이동을 어떻게 모델링할지 많은 고민을 하였다. 그러던 중 다리를 큐로 모델링하여 트럭이 이동하는 것이 아니라 트럭이 들어오면 큐가 움직이는 생..

[고득점 KIT] 주식가격

문제 초 단위로 기록된 주식가격이 담긴 배열이 입력될 때 가격이 떨어지지 않은 기간은 몇 초인지 return하는 함수를 완성하세요 입력 주식가격이 담긴 배열이 입력된다. 출력 각각의 주식가격이 떨어지지않는 기간은 몇 초인지 배열형태로 출력한다. 접근 기준이 되는 가격보다 크거나 같다면 1을 증가시키고 작다면 1을 증가시키고 중단시킨다. 풀이 1. prices의 처음부터 탐색을 진행하며 각 탐색마다 count를 0으로 초기화시킨다. 2. 기준이되는 인덱스 i의 값보다 크거나 같다면 count를 증가시킨다. 2. 하지만 인덱스 i보다 작다면 count를 증가시키고 break한다. 3. 지금까지 증가시킨 count를 answer에 추가한다. 4. 마지막은 count가 0이 되므로 바로 answer에 0이 추가..

[Level1] 문자열 내림차순으로 배치하기

문제 입력된 문자열을 내림차순으로 정렬하여 출력한다. 소문자는 대문자보다 크다. 입력 문자열이 입력된다. 출력 내림차순으로 정렬된 문자열이 출력된다. 1. 입력된 문자열을 sorted()를 통해 list로 변환하여 내림차순 정렬한다. 2. join()을 통해 리스트의 문자를 문자열로 합쳐서 출력한다. def solution(s): answer = '' _s=sorted(s,reverse=True) answer="".join(_s) return answer

[Level1] 콜라츠 추측

문제 입력된 수가 짝수면 2로 나누고 홀수면 3을 곱한뒤 1을 더한다. 위의 과정을 1이 될때까지 반복하며 반복한 횟수를 출력한다. 이때 500번을 초과하여 반복했을 때도 1이되지 않는다면 -1을 출력한다. 입력 입력되는 정수는 1 이상 8000000 미만인 정수이다. 출력 반복횟수를 출력한다. 1. 500번의 for문을 실행한다. 2. 짝수면 2를 나누고 홀수면 3을 곱한 뒤 +1한다. 3. 위 과정 중 num이 1이라면 바로 횟수를 return한다. 4. for문에서 return하지 못했다면 -1을 return한다. def solution(num): answer = 0 for i in range(500): if num==1: return i if num%2: num=num*3+1 else: num//..

[Level1] 체육복

문제 여벌 체육복이 있는 학생이 도난당한 학생들에게 체육복을 빌려준다. 학생들의 번호는 체격 순으로 매겨져있어 바로 앞번호의 학생이나 바로 뒷번호의 학생에게만 체육복을 빌려줄 수 있다. 예를 들어, 4번 학생은 3번 학생이나 5번 학생에게만 체육복을 빌려줄 수 있다. 체육복을 적절히 빌려 최대한 많은 학생이 체육수업에 들어야한다. 도난당한 사람과 여분의 체육복이 있는 번호는 중복이 없으며, 여분의 체육복이 있는 학생이 도난당할 수도 있다. 입력 전체학생의 수 n, 도난당한 학생들의 번호가 담긴 리스트 lost, 여벌의 체육복을 가져온 학생 reserve가 입력된다. 출력 체육수업을 들을 수 있는 학생의 최댓값을 return 이번 문제에서 주의해야될 사항은 다음과같다. - 전체 학생 중 도난당하거나 여벌의..

[Level1] 핸드폰 번호 가리기

문제 핸드폰 번호가 입력되었을 때 뒤의 4자리를 제외한 나머지 번호를 "*"로 가린다. 입력 01088884444 출력 *******4444 1. 입력된 번호를 list형태로 변환한다. 2. 리스트의 길이 - 4 만큼 for문을 돌린다. 3. 첫 번째자리부터 지정한 길이만큼 *로 변환한다. 4. join()을 통해 list의 요소를 문자열로 변환한다. 리스트의 요소가 str형태라면 join으로 문자열로 변환할 수 있다. python def solution(phone_number): answer = '' phone_number=list(phone_number) for idx in range(len(phone_number)-4): phone_number[idx]='*' answer="".join(phone_..

[Level1] 자연수 뒤집어 배열로 만들기

문제 자연수가 입력되었을 때 뒤집어서 배열로 출력하자 입력 12345 출력 [5,4,3,2,1] 1. 입력된 n을 문자열로 변환한다. 2. 문자열을 뒤집어 for문을 돌리고 answer에 int형으로 변환하여 추가한다. 문자열에 reversed(str)을 하고 list형태로 변환해줘야한다. python def solution(n): answer = [] n=str(n) for idx in reversed(n): answer.append(int(idx)) return answer 다른 사람의 풀이 map은 반복 가능한 객체에 지정된 함수로 원소를 채우는 역할을 하는 함수이다. 아래의 코드는 문자열로 변형된 n을 뒤집어 int형으로 list에 추가하는 것이다. def digit_reverse(n): retu..

[Level1] 소수찾기

문제 입력받은 N까지의 수 중 소수의 개수를 출력한다. 입력 10 출력 4 처음에 for문을 이용해서 소수를 구했을 때 시간초과가 발생했다. 따라서 에라토스테네스의 체를 이용해서 푸는 방법을 알게되었다. 원리는 다음과 같다. 1~50까지의 수 중 소수를 구하려고한다. 1. 1은 소수가 아니니 제외시키고 2부터 구한다. 2. 2는 소수이고 2의 배수들을 소수가 아니라고 판단하고 걸러낸다. 3. 걸러내고 남은 수 중 가장 작은 수인 3은 소수이고 또 3의 배수들을 걸러낸다. 4. 걸러내고 남은 수 중 가장 작은 수인 5는 소수이고 또 5의 배수들을 걸러낸다. 5. 위의 과정을 반복하면 소수만 남게되고 소수를 출력하면된다. python - primbe_number에 set형태로 2부터 n까지의 수를 생성했다...

[Level1] 행렬의 덧셈

문제 행렬의 덧셈을 하여 2차원 리스트로 출력하기 입력 arr1 = [[1,2],[2,3]] arr2 = [[3,4],[5,6]] 출력 [[4,6],[7,9]] 문제를 푸는 것은 어려움이 없었지만 2차원 리스트에 요소를 추가할 때 어려움을 겪었다. 아래는 처음에 작성했던 코드이다. 아래처럼 answer가 빈 2차원 리스트를 생성하고 answer[y]에 요소를 추가하는 식으로 진행했다. 하지만 리스트의 범위를 벗어났다는 오류메시지가 출력되었다. 현재까지 오류의 원인을 이해하지 못하겠다. arr1=[[1,2],[2,3]] arr2=[[3,4],[5,6]] answer = [[]] for y in range(len(arr1)): for x in range(len(arr1[y])): answer[y].appen..

728x90
반응형