본문 바로가기

전체 글

(171)
[프로그래머스][2021 Dev-Matching: 웹 백앤드 개발자(상반기)][Python] 로또의 최고 순위와 최저 순위 문제를 정리해보자. 로또는 1부터 45까지 숫자 중에서 6개를 찍어서 맞히는 대표적인 복권이다. 아래는 로또의 순위를 정하는 방식이다. 민우는 로또를 구매했다. 하지만 숫자 몇 개는 알아볼 수 없게 됐다. 민우의 로또로 당첨이 가능했던 최고 순위와 최저 순위를 알아보자. (0은 알아볼 수 없는 숫자이다.) 예) 민우의 번호 : 44, 1, 0, 0, 31, 25 당첨 번호 : 31, 10, 45, 1, 6, 19 최고 순위 : 3등 (4개 번호가 일치) 최저 순위 : 5등 (2개 번호가 일치) 풀이를 생각해보자. 먼저, 민우가 구매한 로또의 번호와 당첨 번호가 몇 개가 일치하는지 확인한다. 그리고 최고 순위와 최저 순위를 구한다. 최고 순위 : 0이 모두 당첨 숫자가 일 때이다. 최저 순위 : 0이 모두..
[프로그래머스][2022 KAKAO BLIND RECRUITMENT][Python] 파괴되지 않은 건물 문제를 정리해보자. N x M 크기의 행렬 모양의 게임 맵이 있다. 이 맵에는 내구도를 가진 건물이 각 칸마다 하나씩 있다. 1. 건물은 적의 공격을 받으면 내구도가 감소한다. 2. 건물은 내구도가 0이하가 되면 파괴된다. 3. 건물은 아군의 회복 스킬을 받으면 내구도가 증가한다. 4. 건물은 파괴되었다가 회복 스킬을 받아 내구도가 1이상이 되면 파괴되지 않은 상태가 된다. 적의 공격 혹은 아군의 회복 스킬이 모두 끝난 뒤 파괴되지 않은 건물의 개수는 몇 개인가? 아래는 프로그래머스에 나온 예이다. 풀이를 생각해보자. 방법 1) 매번 적의 공격 혹은 아군의 회복 스킬을 기본 게임 맵의 내구도에 적용시킨다. 이 방법은 효율성 테스트에서 통과할 수 없다. skill의 행의 길이는 최대 250,000이다. b..
[프로그래머스][2022 KAKAO BLIND RECRUITMENT][Python] k진수에서 소수 개수 구하기 문제를 정리해보자. 양의 정수 n이 주어진다. 이 숫자를 k진수로 바꿨을 때, 변환된 수 안에 조건에 맞는 소수가 몇 개인지 찾으면 된다. 조건은 아래와 같다. ( P는 소수[Prime Number]를 의미한다.) 1. 소수 양쪽에 0이 있는 경우 : 0P0 2. 소수 오른쪽에만 0이 있는 경우 : P0 3. 소수 왼쪽에만 0이 있는 경우 : 0P 4. 소수 양쪽에 아무것도 없는 경우 : P 단, P는 각 자릿수에 0을 포함하지 않는 소수이다. 예를 들어, 101은 P가 될 수 없다. 풀이를 생각해보자. 예를 들어, 437674을 3진수로 바꾸면 211020101011이다.먼저, 211020101011안에서 조건에 맞는지 확인할 수를 찾자. ( N는 수[Number]를 의미한다.) 0을 기준으로 좌우를 ..