전체 글 123

[프로그래머스/파이썬] 불량 사용자

https://school.programmers.co.kr/learn/courses/30/lessons/64064 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 요약응모자 아이디 목록 user_id와, 일부 글자가 *로 가려진 불량 사용자 목록 banned_id가 주어진다.* 하나는 문자 하나에 대응하고, 길이와 *가 아닌 글자가 모두 맞아야 매핑된다.불량 사용자 목록에 매핑되는 제재 아이디 조합이 몇 가지인지 구한다.같은 아이디는 중복해서 못 쓰고, 순서만 다르고 구성이 같으면 같은 경우로 센다.user_id는 최대 8개, 각 길이도 최대 8이다.알고리즘 / 핵심 아이디어크기가 8 이하로 작아서 순열 완..

알고리즘 2026.09.28

[프로그래머스/파이썬] 피보나치 수

https://school.programmers.co.kr/learn/courses/30/lessons/12945 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 요약F(0) = 0, F(1) = 1이고, n ≥ 2이면 F(n) = F(n-1) + F(n-2)이다.n번째 피보나치 수를 1234567로 나눈 나머지를 return 한다.n은 2 이상 100,000 이하다.알고리즘 / 핵심 아이디어DP(반복문)로 풀었다.리스트 [0, 1]로 시작한다.2부터 n까지 돌면서 앞의 두 값을 더해서 리스트에 추가한다.더할 때마다 1234567로 나눈 나머지를 저장한다.n이 10만이면 피보나치 수가 엄청나게 커진다. 그..

알고리즘 2026.09.28

[프로그래머스/파이썬] 다음 큰 숫자

https://school.programmers.co.kr/learn/courses/30/lessons/12945 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 요약자연수 n이 주어진다.n보다 크면서, 2진수로 바꿨을 때 1의 개수가 n과 같은 수 중 가장 작은 수를 구한다.예를 들어 78(1001110)의 다음 큰 숫자는 83(1010011)이다.n은 1,000,000 이하다.알고리즘 / 핵심 아이디어그냥 완전탐색으로 풀었다.n의 2진수에서 1의 개수를 센다. (bin(n).count('1'))n+1부터 하나씩 올려가면서 1의 개수가 같은 첫 번째 수를 찾는다.찾자마자 바로 return 한다. 1부터 올..

알고리즘 2026.09.28

[프로그래머스/파이썬] 인사고과

https://school.programmers.co.kr/learn/courses/30/lessons/152995 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 요약사원마다 [근무 태도 점수, 동료 평가 점수]가 있다.어떤 사원이 다른 사원 한 명에게라도 두 점수 모두 낮으면 인센티브를 받지 못한다.인센티브를 받는 사원끼리 두 점수의 합으로 석차를 매긴다. 동점이면 동석차고, 그 수만큼 다음 석차는 건너뛴다.scores[0]이 완호일 때 완호의 석차를 구한다. 인센티브를 못 받으면 -1을 return 한다.사원 수는 최대 100,000명이다.알고리즘 / 핵심 아이디어N이 10만이라 모든 쌍을 비교하는 O..

알고리즘 2026.09.28

[프로그래머스/파이썬] 자물쇠와 열쇠

https://school.programmers.co.kr/learn/courses/30/lessons/60059 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr문제N×N 크기의 자물쇠와 M×M 크기의 열쇠가 있다. 열쇠를 돌리고 움직여서, 자물쇠의 홈(0)을 열쇠의 돌기(1)로 완벽하게 채울 수 있으면 true, 아니면 false를 반환하라.말로만 들으면 감이 잘 안 오니까, 실제 퍼즐 조각을 맞추는 상황으로 생각해보자.자물쇠 = 퍼즐판 (구멍이 뚫려 있는 판)열쇠 = 퍼즐 조각 (튀어나온 부분이 있는 조각)이 조각을 돌리기도 하고, 이리저리 옮기기도 하면서 구멍에 딱 맞춰 끼워 넣을 수 있는지 확인하는 것규칙..

알고리즘 2026.09.21

[프로그래머스/파이썬] 숫자의 표현

https://school.programmers.co.kr/learn/courses/30/lessons/12924 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 요약자연수 n이 주어졌을 때, n을 연속한 자연수들의 합으로 표현할 수 있는 방법의 개수를 구하는 문제예를 들어 15는 다음과 같이 4가지로 표현할 수 있다.1 + 2 + 3 + 4 + 5 = 154 + 5 + 6 = 157 + 8 = 1515 = 15접근 방법가장 직관적인 방법은 시작점 i를 하나씩 고정하고, 그 지점부터 자연수를 하나씩 더해가면서 합이 n이 되는지 확인하는 것이다.시작점 i를 1부터 n까지 순회각 시작점에서 j를 i부터 늘려가며..

알고리즘 2026.09.21

[프로그래머스/파이썬] 이진 변환 반복하기

https://school.programmers.co.kr/learn/courses/30/lessons/70129 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr문제 요약x에서 모든 '0'을 제거한다.남은 문자열의 길이 c를 구하고, x를 "c를 2진법으로 표현한 문자열"로 바꾼다.문자열 s가 주어졌을 때, s가 "1"이 될 때까지 이 변환을 반복하면서이진 변환을 몇 번 했는지변환 과정에서 제거된 0의 총 개수를 각각 배열 [변환 횟수, 제거된 0의 개수]로 반환하는 문제이다.접근 방법문제에서 정의한 과정을 그대로 시뮬레이션하면 된다.현재 문자열이 "1"이면 반복을 멈춘다.그렇지 않다면, 문자열에 포함된 '0'의..

알고리즘 2026.09.21

[프로그래머스/파이썬] 스티커모으기(2)

https://school.programmers.co.kr/learn/courses/30/lessons/12971# 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr문제 요약N개의 스티커가 원형으로 연결되어 있다. 스티커를 몇 장 뜯어내려고 하는데, 한 장을 뜯으면 양옆에 인접한 스티커는 사용할 수 없게 된다. 뜯어낸 스티커에 적힌 숫자의 합이 최대가 되도록 할 때, 그 최댓값을 구하는 문제다.접근 방법원형 구조에서 "인접한 것을 동시에 선택할 수 없다"는 조건을 다루는 전형적인 방법은, 첫 번째 원소를 포함하는 경우와 포함하지 않는 경우로 나눠서 각각을 일렬(선형) DP로 풀고, 그 중 최댓값을 취하는 것이다.왜..

알고리즘 2026.09.21

[프로그래머스/파이썬] 가장 긴 팰린드롬

https://school.programmers.co.kr/learn/courses/30/lessons/12904 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 요약문자열 s가 주어졌을 때, s의 부분문자열 중 가장 긴 팰린드롬(회문)의 길이를 구하는 문제문자열 길이가 최대 2,500이라는 제한이 있어서, 무식하게 모든 부분문자열을 확인하면 시간 초과 위험이 있다. 접근 방법 (제출한 풀이)가장 직관적인 방법은 모든 부분문자열을 하나씩 만들어보고, 그것이 팰린드롬인지 확인하는 것이다.시작 인덱스 i와 끝 인덱스 j를 이중 반복문으로 모두 순회s[i:j]가 팰린드롬인지(s[i:j] == s[i:j][::-1..

알고리즘 2026.09.21

[프로그래머스/파이썬] 요격시스템

https://school.programmers.co.kr/learn/courses/30/lessons/181188 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 요약x축 상에 개구간 (s, e)로 표현되는 폭격 미사일이 여러 개 주어졌을때, 특정 x 좌표에 요격 미사일을 쏘면, 그 x 좌표를 포함하는(단, 양 끝점 s와 e는 제외) 모든 폭격 미사일을 한 번에 요격할 수 있다.목표: 모든 폭격 미사일을 요격하는 데 필요한 최소 요격 미사일 수를 구하기이 문제는 전형적인 구간 스케줄링 - 최소 점으로 모든 구간 커버하기 문제이다. 접근 방법구간을 끝나는 지점(e) 기준으로 정렬한다.정렬된 순서대로 구간을 ..

알고리즘 2026.09.21