코딩테스트공부 9

[세무민의 코딩일기] 로또의 최고 순위와 최저 순위 문제 풀이

[세무민의 코딩일기] 로또의 최고 순위와 최저 순위 문제 풀이 이번에 풀어본 문제는 2021 Dev-matching : 웹 백앤드 개발 관련하여 출제된 문제이다. 1. 문제 설명 2. 제한사항 및 예시 3. 문제 풀이 방법 이번 문제는 문제 이해만 잘하면 쉽게 풀수 있는 문제입니다. 말 그대로 0을 제외하고 같은 값이 존재하는지 찾아본 뒤에 0값만큼 최고순위에 증가시킨 뒤 순위를 매기면 됩니다. 4. 코드 풀이 def RankCheck(result): return {6:1, 5:2, 4:3, 3:4, 2:5, 1:6, 0:6}.get(result, "rank") def solution(lottos, win_nums): result = [] maxResult = 0 minResult = 0 zeroChec..

세무민의 알고가자 : 프로그래머스 3진법 뒤집기 문제 풀기

최근에 면접 준비하느라 포스팅을 못했는데 면접이 끝나서 오늘 일어나자마자 푼 문제를 포스팅 해보려구 합니다! 오늘 푼 문제는 3진법 뒤집기! 문제 설명 & 제한 사항 & 입출력 예시 풀이 이번 문제는 담백 그 자체! 사실 어렵지 않다. 10진법 -> 3진법 -> 역순 -> 10진법 위에 조건처럼 구현해주면 되는데 여기서 리스트를 이용하면 역순부분을 사용하지 않아도 된다. 즉! 10진법 -> 3진법 -> 10진법 바로 코드를 보도록 하자! # 첫번째 코드 def solution(n): result = [] count = n while count > 0: tmp = count % 3 result.append(tmp) count = int(count / 3) i, check = -1, 0 answer = 0 ..

세무민의 알고가자 : 프로그래머스 카펫 문제 풀기

오늘 풀어볼 문제는 카펫! 생각해보면 쉬웠으나 삽질을 조금 해버림...ㅎ 문제 설명 제한사항 및 입출력 예시 풀이 이 문제는 우선 문제를 이해하는 것이 중요하다. 결국에는 노란색 카펫이 갈색 카펫보다 작아야 한다는 것을 인지해야 한다. 예를 들어서 Brown, Yellow = 24, 24의 예시를 들어보면 아래의 그림처럼 그릴 수 있다. 여기서 중요한 건 노란색의 테이블을 갈색 테이블이 포함해야 한다는점! 여기서 확인할 수 있는것은 아래와 같다! 결국 Yellow는 (x-2)(Y-2)의 값을 일치하는 경우의 수를 찾아야 한다. 반복문을 이용하더라도 위와 같은 경우의 수를 인지하지 못한다면 1~2개 정도의 테스트 케이스를 통과하지 못한다. 그 이유는! Yellow를 포함하지 않는 값을 출력하기 때문! 이번..

세무민의 알고가자 : 프로그래머스 구명보트 문제 풀기

오늘 풀어볼 문제는 구명보트! 문제 설명 제한 사항 및 입출력 풀이 이번 문제는 탐욕법을 이용하는 문제에요 말 그대로 최소보트의 개수를 구해주면 됩니다. 예를 들어서 [70, 80, 50]을 보도록 하죠! limit가 100이라는 건 보트 한개에 최대 용량입니다. 보트에는 최대 2명만 탑승 가능한 경우의 수를 다 만들어보면 70, 80, 90, 70+80, 70+50, 80+50에서 100이하는 70, 80, 90 총 3개입니다. 따라서 최소 보트의 개수는 3개가 필요하게 됩니다. 즉 요약하자면! 1. 보트에는 최대 2명 탑승 가능하다는 조건 2. limit 이하로 탑승 가능하다는 점 3. 정렬을 하면 크기 비교가 더 쉽다. 탐욕법을 이용하게 되면 가장 빠른 접근 방법은 반복문이 되겠죠? 코드 def s..

세무민의 알고가자 : 프로그래머스 소수 찾기 문제 풀기

오늘 풀 문제는 소수 찾기! 문제는 쉽다고 생각했는데 생각보다 접근하고 코드 짜는데 오래 걸렸던 문제! 문제 설명 & 제한 사항 입출력 예시 풀이 일단 이번 문제는 코드 구현은 조금 어려웠으나 문제 푸는 방식은 쉽게 생각이 들었다. 예를 들어서 "011" 으로 문제를 풀어본다면 011라는 문자열을 쪼개서 가능한 숫자를 만든 후 소수인지 판별하면 된다. numbers numbers로 만들 수 있는 수 list 011 0, 1, 1, 01, 11, 10, 01, 011, 101, 110 set 011 0, 1, 01, 11, 10, 011, 101, 110 위의 표처럼 011로 조합할 수 있는 수를 모두 만들어 준 후 SET로 중복값을 제거하면 조합하는 숫자를 모두 확인 가능하다. 즉! 이번 문제를 푸는 방..