[알고리즘] 코딩테스트 준비 -5
[KT 에이블스쿨] AI 트랙 코딩테스트 대비 - 프로그래머스 기반 알고리즘 학습 과정 정리
[알고리즘] 코딩테스트 준비 -5
들어가며
이번 포스팅은 코딩테스트 준비 시리즈의 마지막 글이다.
지금까지 기초적인 알고리즘 문제들을 하나씩 살펴보며 Python의 다양한 기능들을 복습해봤다.
1. 수열과 구간 쿼리
문제: 수열과 구간 쿼리 -2
- 정수 배열과 쿼리를 처리하여 새로운 배열을 만드는 문제
문제 설명
- 정수 배열 arr와 2차원 정수 배열 queries가 주어짐
- queries의 각 원소는 [s, e, k] 형태의 쿼리를 나타냄
- s ≤ i ≤ e 범위의 모든 i에 대해 i가 k의 배수이면 arr[i]에 1을 더함
- 모든 쿼리를 처리한 후의 arr를 return
문제 해결 접근
- queries 배열을 순회하며 각 쿼리 처리
- 각 쿼리에서 주어진 범위(s~e) 확인
- 범위 내 k의 배수인 인덱스 찾기
- 해당 인덱스의 arr 값 증가
처리 규칙
- queries의 각 쿼리 [s, e, k]에 대해:
- s부터 e까지의 인덱스 i를 확인
- i가 k의 배수이면 arr[i]에 1을 더함
- 모든 쿼리 처리 후:
- 변경된 arr 배열 반환
구현 코드
1
2
3
4
5
6
7
8
9
10
11
12
# 풀이
def solution(arr, queries):
for s, e, k, in queries:
for i in range(s, e + 1): # s ≤ i ≤ e
if i % k == 0: # i가 k의 배수이면
arr[i] += 1
return arr
# test
arr = [0, 1, 2, 4, 3]
queries = [[0, 4, 1],[0, 3, 2],[0, 3, 3]]
solution(arr, queries) # [3, 2, 4, 6, 4]
2. 배열 만들기
문제: 0과 5로만 이루어진 수 찾기
- 주어진 범위 내에서 0과 5로만 이루어진 모든 정수를 찾는 문제
문제 설명
- 정수 l과 r이 주어짐
- l 이상 r 이하의 정수 중에서 숫자 “0”과 “5”로만 이루어진 모든 정수를 찾기
- 찾은 정수들을 오름차순으로 정렬하여 배열로 반환
- 해당하는 정수가 없다면 [-1] 반환
문제 해결 접근
- l부터 r까지의 모든 정수 확인
- 각 정수가 0과 5로만 이루어졌는지 검사
- 조건을 만족하는 정수들을 배열에 저장
- 결과 배열 반환
처리 규칙
- 숫자 검사:
- 각 정수를 문자열로 변환하여 검사
- 모든 자릿수가 0 또는 5인지 확인
- 결과 처리:
- 조건을 만족하는 정수들을 오름차순으로 정렬
- 해당하는 정수가 없으면 [-1] 반환
구현 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
# 풀이
def solution(l, r):
answer = []
for num in range(l, r + 1): # l ≤ num ≤ r
if set(str(num)) <= {'0', '5'}: # 숫자가 '0'과 '5'로만 이루어져 있는지 판별
answer.append(num) # 리스트에 추가
return answer if answer else [-1]
# test
l = 5
r = 550
solution(l, r)
마무리
지난 5개의 포스팅을 통해 기본적인 코딩테스트 문제들을 다뤄봤다.
프로그래밍의 기초가 되는 개념들을 복습했는데, 평소 자주 쓰지 않는 Python의 내장 함수와
자료구조를 활용하는 방법도 익힐 수 있었다. 앞으로도 꾸준한 학습과 문제 풀이를 통해 알고리즘 실력을 향상시켜야겠다.
시리즈
This post is licensed under CC BY 4.0 by the author.