프로그래머스 코딩 기초 트레이닝 연습풀이입니다. 모든 문제의 저작권은 프로그래머스에게 있으며 문제가 됐을 시 삭제하겠습니다.
https://school.programmers.co.kr/learn/challenges/training?order=acceptance_desc&languages=python3
코딩 기초 트레이닝 | 프로그래머스 스쿨
프로그래밍 언어를 처음 접하거나 프로그래밍 언어에 익숙해지고 싶다면? 코딩 역량을 탄탄하게 길러주는 코딩 기초 트레이닝으로 차근차근 코딩에 대한 기초 감각을 길러 보세요.
school.programmers.co.kr
DAY7 반복문
수열과 구관쿼리 4
문제 설명
정수 배열 arr와 2차원 정수 배열 queries이 주어집니다. queries의 원소는 각각 하나의 query를 나타내며, [s, e, k] 꼴입니다.각 query마다 순서대로 s ≤ i ≤ e인 모든 i에 대해 i가 k의 배수이면 arr[i]에 1을 더합니다. 위 규칙에 따라 queries를 처리한 이후의 arr를 return 하는 solution 함수를 완성해 주세요.
입출력 예
arr queries result
[0, 1, 2, 4, 3] | [[0, 4, 1],[0, 3, 2],[0, 3, 3]] | [3, 2, 4, 6, 4] |
입출력 설명
[0, 1, 2, 4, 3] |
[1, 2, 3, 5, 4] |
[2, 2, 4, 5, 4] |
[3, 2, 4, 6, 4] |
- 따라서 [3, 2, 4, 6, 4]를 return 합니다.
슈도코드
day 6에서 했던 문제와 유사 / % 나머지 연산자를 활용하여 풀기
전체코드
def solution(arr, queries):
for query in queries:
s, e, k = query
for i in range(s, e+1):
if i % k == 0:
arr[i] += 1
return arr
배열만들기2
문제설명
정수 l과 r이 주어졌을 때, l 이상 r이하의 정수 중에서 숫자 "0"과 "5"로만 이루어진 모든 정수를 오름차순으로 저장한 배열을 return 하는 solution 함수를 완성해 주세요. 만약 그러한 정수가 없다면, -1이 담긴 배열을 return 합니다.
입출력
l r result
5 | 555 | [5, 50, 55, 500, 505, 550, 555] |
10 | 20 | [-1] |
슈도코드
나머지 연산자 코드를 생각해봤는데 생각보다 많고 포함되는게 있고 아닌것도 있어서 패스
대신에 set 함수를 이용함. 전체 숫자에서 0,5인거 빼서 추가하기
전체코드
def soultion(l,r):
answer = []
for num in ange(l, r+1):
if not set(str(num)) - set(['0','5']):
answer.append(num)
return answer if answer else[-1]
카운트 업
문제설명
정수 start와 end가 주어질 때, start부터 end까지의 숫자를 차례로 담은 리스트를 return하도록 solution 함수를 완성해주세요.
입출력 예
start end result
3 | 10 | [3, 4, 5, 6, 7, 8, 9, 10] |
슈도코드
start로 시작해서 end+1 로 끝나는 for 돌려서 append 이용해서 추가해보기
전체코드
def solution(start, end):
answer = [ ]
for i in range(start, end+1):
answer.append(i)
return answer
콜라츠 수열 만들기
문제설명
모든 자연수 x에 대해서 현재 값이 x이면 x가 짝수일 때는 2로 나누고, x가 홀수일 때는 3 * x + 1로 바꾸는 계산을 계속해서 반복하면 언젠가는 반드시 x가 1이 되는지 묻는 문제를 콜라츠 문제라고 부릅니다. 그리고 위 과정에서 거쳐간 모든 수를 기록한 수열을 콜라츠 수열이라고 부릅니다. 계산 결과 1,000 보다 작거나 같은 수에 대해서는 전부 언젠가 1에 도달한 는 것이 알려져 있습니다. 임의의 1,000 보다 작거나 같은 양의 정수 n이 주어질 때 초기값이 n인 콜라츠 수열을 return 하는 solution 함수를 완성해 주세요
슈도코드
while문을 사용해서 n!=1이 아닐때까지 돌리고 홀수 짝수 구분은 % 연산자 이용하기
전체코드
def solution(n):
answer = [n]
while n!=1:
if n%2==0:
n = n/2
else:
n = n*3+1
answer.append(n)
return answer
배열 만들기4
문제 설명
정수 배열 arr가 주어집니다. arr를 이용해 새로운 배열 stk를 만드려고 합니다.
변수 i를 만들어 초기값을 0으로 설정한 후 i가 arr의 길이보다 작으면 다음 작업을 반복합니다.
- 만약 stk가 빈 배열이라면 arr[i]를 stk에 추가하고 i에 1을 더합니다.
- stk에 원소가 있고, stk의 마지막 원소가 arr[i]보다 작으면 arr[i]를 stk의 뒤에 추가하고 i에 1을 더합니다.
- stk에 원소가 있는데 stk의 마지막 원소가 arr[i]보다 크거나 같으면 stk의 마지막 원소를 stk에서 제거합니다.
위 작업을 마친 후 만들어진 stk를 return 하는 solution 함수를 완성해 주세요.
입출력예시
arr result
[1, 4, 2, 5, 3] | [1, 2, 3] |
슈도코드
조건에 따라 if~elif~else문장 사용하기
전체코드
def solution(arr):
stk = []
i = 0
while i<len(arr):
if not stk:
stk.append(arr[i])
i+=1
elif stk[-1]<arr[i]:
stk.append(arr[i])
i+=1
else:
stk.pop(-1)
return stk
'[코테준비] > [코테준비]Python' 카테고리의 다른 글
[코테준비]프로그래머스 코딩 기초 트레이닝 DAY9 Python <문자열> (2) | 2023.08.24 |
---|---|
[코테준비]프로그래머스 코딩 기초 트레이닝 DAY8 Python <조건문, 문자열> (0) | 2023.07.30 |
[코테준비]프로그래머스 코딩 기초 트레이닝 DAY6 Python <조건문, 반복문> (2) | 2023.07.29 |
[코테준비]]프로그래머스 코딩 기초 트레이닝 Python <<조건문>> DAY5 (1) | 2023.06.29 |
[코테준비]]프로그래머스 코딩 기초 트레이닝 Python <<연산, 조건문>> DAY3~DAY4 (0) | 2023.06.27 |