Algorithm
[python] 프로그래머스 Lv1 - 기사단원의 무기
🔗 문제 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 📁 분류 수학 구현 브루트포스 💡 풀이 주어진 범위 내의 모든 수에 대한 약수의 개수를 계산하고, 주어진 limit 값과 비교하여 조건에 따라 power 값 또는 약수의 개수를 선택한 후, 이들의 합을 반환한다. number의 범위가 1 ~ 100,000이기 때문에, 시간 복잡도를 개선하기 위해 약수의 개수를 계산할 때 제곱근까지만 반복하여 약수를 계산한다. 💻 코드 def get_divisor_cnt(): divisor = [0 for _ in range(100001)] for n in ran..
[python] 프로그래머스 Lv 1 - 명예의 전당 (1)
🔗 문제 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 📁 분류 시뮬레이션 구현 자료구조 💡 풀이 이 문제는 리스트에 가장 작은 값을 뽑아내는 문제이다. 만약 리스트에 용량이 다 찾다면 현재 값과 가장 작은 값을 비교하여 가장 작은 값을 빼고 새로운 값을 넣어야 한다. 나는 리스트를 정렬하고 가장 작은 값을 뽑아내는 방식으로 풀었지만, min 함수를 사용하면 더 간단하게 풀 수 있었다. 💻 코드 """ [0, 300, 40, 300, 20, 70, 150, 50, 500, 1000] 0 -> 0 300 0 -> 0 300 40 0 -> 0 300 3..
[python] 프로그래머스 Lv 1 - 문자열 나누기
🔗 문제 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 📁 분류 구현 💡 풀이 주어진 규칙에 따라 문자열을 나누어서 나누어진 문자열의 개수를 반환하면 되는 문제이지만, 규칙을 이해하기가 매우 어려웠다. 주어진 규칙을 설명하자면 다음과 같다. 문자를 하나씩 추가한다. 추가되는 문자열에서 첫 문자의 개수와 나머지 개수를 구한다. 첫 문자의 개수와 나머지 개수가 같다면 문자열을 초기화한다. 1, 3 과정을 추가할 문자가 없을 때까지 반복한다. 💻 코드 def solution(s): answer = 0 word = '' for i, ch in enumera..
[python] 프로그래머스 Lv 1 - 가장 가까운 같은 글자
🔗 문제 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 📁 분류 구현 💡 풀이 주어진 문자열 s에 대해 각 문자의 위치에서 자신보다 앞에 나왔으면서, 자신과 가장 가까운 곳에 있는 같은 글자의 위치를 계산하는 문제이다. 딕션너리를 활용하여 각 글자의 마지막 위치를 기록하고, 이를 이용해 거리를 계산하여 answer에 저장하면 된다. 💻 코드 def solution(s): answer = [] dic = {} for i, ch in enumerate(s): if ch not in dic: answer.append(-1) else: answer.appe..
[python] 프로그래머스 Lv 1 - 크기가 작은 부분 문자열
🔗 문제 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 📁 분류 구현 💡풀이 이 문제는 문자열 t에서 길이가 p와 같은 부분 문자열을 추출하고, 해당 부분 문자열이 나타내는 수가 p가 나타내는 수보다 작거나 같은 경우를 세는 문제다. slice를 활용하면 매우 간단하게 풀린다. 💻 코드 def solution(t, p): answer = 0 index = len(p) for i in range(len(t) - index + 1): if t[i:i + index]
[python] 프로그래머스 Lv 1 - 개인정보 수집 유효기간(2023 KAKAO BLIND RECRUITMENT)
🔗 문제 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 📁 분류 구현 💡풀이 이 문제는 주어진 개인 정보와 이용 기간을 확인하여 만료된 개인 정보를 찾는 문제이다. 문제에서 한 달을 28일로 가정했기 때문에 일 수로 표현하기 메우 쉽다. 따라서 주어진 변수들을 일 수로 계산하여 만료된 개인 정보를 찾으면 된다. 💻 코드 def get_day(year, month, day): return (year - 1) * 336 + (month - 1) * 28 + day def solution(today, terms, privacies): answer = []..