전체 글
[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 = []..
[python] 프로그래머스 Lv 1 - 둘 만의 암호
🔗 문제 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 📁 분류 구현 💡풀이 이 문제는 s에서 skip에 포함된 문자를 제외하고 index만큼 이동하여 새로운 문자열을 생성하는 문제이다. 문제를 풀 때 참고해야 할 점은 z를 넘어갈 경우 a로 돌아가는 것이다. 예를 들어 s가 z이고 skip이 ['abcde']이고 index가 1일 경우 z는 a로 돌아가기 때문에 a를 건너뛰고 b를 건너뛰어야 한다. 💻 코드 def solution(s, skip, index): answer = '' s = [ord(i) - ord('a') for i in s] sk..
[python] 프로그래머스 Lv1 - 카드 뭉치
🔗 문제 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 📁 분류 스택 완전탐색 💡풀이 이 문제는 cards1와 cards2를 사용하여 goal에 있는 문자 순서대로 매칭하는 문제이다. goal을 순회하면서 goal[i]와 각 카드의 첫 번째 요소와 일치한다면, 해당 값을 answer에 추가하고 제거한다. goal 리스트의 순서대로 카드를 뽑아오고, goal을 만족하는지 여부를 검사하여 결과를 반환한다. 💻 코드 def solution(cards1, cards2, goal): answer = [] for i in range(len(goal)): if ..
[python] 프로그래머스 Lv 1 - 대충 만든 자판
🔗 문제 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 📁 분류 그리디 💡풀이 이 문제는 주어진 keymap을 기반으로 각 target 문자열을 입력하기 위해 최소 횟수를 계산하는 문제다. 접근 방식은 다음과 같다. 각 target 문자열의 문자를 순회한다. 문자를 keymap 에서 찾고, 해당 문자가 keymap 내에 존재하는 최소 index를 찾는다. 해당 문자를 찾을 수 없다면 -1을 저장하고 다음 문자열로 이동한다. 이러한 방식으로 각 target 문자열에 대해 최소 입력 횟수를 계산하고, 이를 answer 리스트에 저장한다. 💻 코드 def..
DynamoDB의 filterExpression 동작 원리
DynamoDB는 대용량 데이터베이스에서 데이터를관리하고 검색하기 위한 강력한 NoSQL 데이터베이스이다. 이 글에서는 DynamoDB의 filterExpression이 쓰이는 scan과 query 작업 간의 차이점을 비교하고, filterExpression 동작 원리를 설명하려한다. scan 과 query 작업: DynamoDB의 scan과 query 는 모두 데이터베이스에서 항목을 검색하는데 사용되는 주요 메서드이며 최대 1MB 데이터까지 검색할 수 있다. 테이블의 각 Item의 크기가 400kb라면, 한 번의 약 2개의 Item을 가져올 수 있다. 따라서 대용량 데이터를 처리할 때는 효율적인 pagination 및 필터링을 고려해야 한다. scan: 테이블의 전체 항목을 스캔하고 지정된 조건에 맞는..
[python] 프로그래머스 Lv 1 - 덧칠하기
🔗 문제 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 📁 분류 그리디 구현 💡풀이 처음에 문제 예시를 보고 section의 차이 값을 구하고 m을 나누면 되겠다는 생각을 하고 제출했었는데 오답이었다. 8, 2, [2, 6] 를 반례로 볼 수 있다. 두 번째로 생각했던 방식은 n만큼 루프를 돌아 section에 i가 포함되어 있다면 answer에 1를 더해주고 i를 m만큼 더해주었다. - 롤러가 벽에서 벗어나면 안 됩니다. - 구역의 일부분만 포함되도록 칠하면 안 됩니다. 문제에 위와같은 설명이 있어 오답일거라 생각했지만 정답이었다. 😅 완벽한 가라..