전체 글 119

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

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

[프로그래머스/파이썬] 124 나라의 숫자

https://school.programmers.co.kr/learn/courses/30/lessons/12899 문제 요약124 나라에서는 숫자를 표현할 때 1, 2, 4 세 가지 기호만 사용합니다. 자연수 n이 주어졌을 때, 이를 124 나라 식 표기법으로 변환하는 문제접근 방법일반적인 3진법 변환은 n % 3, n // 3을 반복하면서 나머지를 모으는 방식이다. 하지만 124 나라는 자릿값으로 1, 2, 4 세 개를 쓰기 때문에, 나머지가 0이 나오는 경우를 4로 바꿔줘야 한다.n % 3이 1이면 → 그대로 1n % 3이 2이면 → 그대로 2n % 3이 0이면 → 사실은 3인데 이 나라에는 3이라는 표현이 없으므로, 4로 표현하고 대신 다음 자리 계산을 위해 n을 1 줄여줌 (n -= 1)이렇게 나..

알고리즘 2026.09.21

[프로그래머스/파이썬] 숫자 짝꿍

https://school.programmers.co.kr/learn/courses/30/lessons/131128?language=python3 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr문제 요약두 정수 X, Y가 문자열로 주어졌을 때, 두 수에 공통으로 나타나는 숫자들을 최대한 많이 짝지어서 만들 수 있는 가장 큰 정수를 구하는 문제공통으로 나타나는 숫자가 하나도 없으면 → "-1"짝꿍이 전부 0으로만 이루어져 있으면 → "0"X, Y의 길이가 최대 300만 자리에 달할 수 있어서 시간 복잡도 관리가 핵심!!접근 방법각 숫자(0~9)의 등장 횟수를 센다.각 자릿수는 서로 다른 숫자로 바뀔 수 없으므로, ..

알고리즘 2026.09.21

[프로그래머스/파이썬] JadenCase 문자열 만들기

https://school.programmers.co.kr/learn/courses/30/lessons/12951?language=python3 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr문제우선 문제는 알파벳, 숫자, 공백 문자로 이루어진 문자열을 공백을 기준으로 각 단어의 첫글자는 대문자로(첫글자가 알파벳인 경우에만), 나머지 글자는 소문자로 만드는 문제이다. 아이디어처음에는 그냥 파이썬의 split()을 써서 공백을 기준으로 분리한 후 각 단어를 돌며 0번째 인덱스는 대문자로, 나머지는 소문자로 바꿔주는 작업을 진행했는데, 문제에서 공백이 연속해서 여러번 있을 수 있다는 제한이있었다.따라서 단어의 시작 ..

알고리즘 2026.09.02

[프로그래머스/파이썬] 징검다리 건너기

https://school.programmers.co.kr/learn/courses/30/lessons/64062 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr문제 요약일렬로 놓인 징검다리가 있고, 각 디딤돌에는 숫자가 적혀있다. 밟을 때마다 숫자가 1씩 줄어들고, 0이 되면 더 이상 밟을 수 없다. 못 밟는 돌은 건너뛰어야 하는데, 이때 한 번에 최대 k칸까지만 뛸 수 있다.친구들이 한 명씩 순서대로 건너는데, 최대 몇 명까지 건널 수 있는지 구하는 문제. stones 배열 크기가 최대 20만, 값도 최대 2억까지 가능해서 완전탐색은 어림도 없다.알고리즘 / 핵심 아이디어처음엔 "그냥 시뮬레이션 돌리면 안되나..

알고리즘 2026.08.30