1. 수열과 구간 쿼리 4
- s <= i <= e인 i
- for s, e, k in queries:
- for i in range(s, e+1):
- i가 k의 배수면
- if i % k == 0:
- arr[i]에 1을 더하기
- arr[i] =+ 1
def solution(arr, queries):
for s, e, k in queries:
for i in range(s, e+1):
if i % k == 0:
arr[i] += 1
return arr
2. 배열 만들기 2
- l 이상 r 이하의 정수
- for i in range(l, r+1):
- 숫자 '0'과 '5'로만 이루어진 모든 정수
- if all(n in ['0', '5'] for i in str(i)):
- 내장함수 all()
- 반복문으로 순회할 수 있는 모든 객체를 인자로 받음
- list, tuple과 같은 파이썬에서 흔히 볼 수 있는 자료구조
- all() 함수는 인자로 넘어온 자료구조 내의 모든 요소가 참일 때만 True
- 하나라도 거짓인 요소가 있다면 False 반환
- all([True, True, True]) => True
- all([1, 1<2, 2+3==5]) => True
- all([True, False, True]) => False
- all([0, "", None, 1>2]) => False
- n in ['0', '5']: n이 0이나 5로만 이루어져 있다면 True
- for i in str(i): str(i) 문자열로 해야 각 자릿수를 개별 문자로 접근할 수 있음
- i가 105라면 '1', '0', '5' 개별적으로 확인할 수 있음
- 숫자로 접근한다면 105일 것임
- 저장한 정수가 없다면 -1이 담긴 배열을 return
- 저장한 정수가 없다는 말은 list가 비어있다는 말이므로
- if len(answer) == 0:
- answer.append(-1)
- 저장한 정수가 없다는 말은 list가 비어있다는 말이므로
def solution(l, r):
answer = []
for i in range (l, r+1):
if all(n in ['0', '5'] for n in str(i)):
answer.append(i)
if len(answer) == 0:
answer.append(-1)
return answer
3. 카운트 업
- start_num과 end_num까지의 숫자를 차례로
- for i in range(start_num, end_num+1):
- 담은 리스트
- answer.append(i)
def solution(start_num, end_num):
answer = []
for i in range(start_num, end_num+1):
answer.append(i)
return answer
4. 콜라츠 수열 만들기
- 자연수 n이 1에 도달할 때까지 & 기록
- while n != 1:
- ...
- answer.append(1)
- n이 짝수면 2로 나누고 & 기록
- answer.append(n)
- if n % 2 == 0:
- n = n/2
- n이 홀수면 3*n+1로 바꾸고 & 기록
- else:
- n = 3*n+1
def solution(n):
answer = []
while n != 1:
answer.append(n)
if n % 2 == 0:
n = n/2
else:
n = 3*n+1
answer.append(1)
return answer
5. 배열 만들기 4
- 변수 i 초기값 0 & i가 arr의 길이보다 작으면 다음 작업 반복
- i = 0: 변수 초기값 설정
- while len(arr) > i: i가 arr의 길이와 같아지거나 더 커지면 반복문 종료
- stk가 빈 배열이라면 arr[i]를 stk에 추가, i에 1 더하기
- if len(stk) == 0: stk의 길이가 0이라면 배열이 비었다는 뜻
- stk.append(arr[i]): stk 리스트에 arr[i] 추가
- i += 1
- stk에 원소가 있고 & stk 마지막 원소가 arr[i]보다 작으면 arr[i]를 stk의 뒤에 추가하고 & i에 1을 더하기
- elif stk[-1] < arr[i]: stk[-1]는 stk의 마지막 원소
- stk.append(arr[i])
- i += 1
- stk에 원소가 있고 & str 마지막 원소가 arr[i]보다 크거나 같으면 stk 마지막 원소를 제거
- else:
- stk.pop()
- 내장함수 pop(): list의 마지막 요소 제거
def solution(arr):
stk = []
i = 0
while len(arr) > i:
if len(stk) == 0:
stk.append(arr[i])
i += 1
elif stk[-1] < arr[i]:
stk.append(arr[i])
i += 1
else:
stk.pop()
return stk
참고 사이트: https://programmers.co.kr/
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
반응형
'Python' 카테고리의 다른 글
[Python] Lv.0 코딩 기초 트레이닝 - 글자 이어 붙여 문자열 만들기, 9로 나눈 나머지, 문자열 여러 번 뒤집기 (0) | 2024.06.12 |
---|---|
[Python] Lv.0 코딩 기초 트레이닝 - 간단한 논리 연산, 주사위 게임 3 (0) | 2024.06.11 |
[Python] Lv.0 코딩 기초 트레이닝 - 마지막 두 원소, 수 조작하기 1, 수 조작하기 2, 수열과 구간 쿼리 2, 수열과 구간 쿼리 3 (0) | 2024.06.05 |
[Python] Lv.0 코딩 기초 트레이닝 - 코드 처리하기, 등차수열의 특정한 항만 더하기 (0) | 2024.05.23 |
Python Lv.0 코딩 기초 트레이닝 - 이어 붙인 수, 원소들의 곱과 합, 주사위 게임 2 (0) | 2024.05.22 |