프로그래머스 코딩 기초 트레이닝 연습풀이입니다. 모든 문제의 저작권은 프로그래머스에게 있으며 문제가 됐을 시 삭제하겠습니다.
https://school.programmers.co.kr/learn/challenges/training?order=acceptance_desc&languages=python3
코딩 기초 트레이닝 | 프로그래머스 스쿨
프로그래밍 언어를 처음 접하거나 프로그래밍 언어에 익숙해지고 싶다면? 코딩 역량을 탄탄하게 길러주는 코딩 기초 트레이닝으로 차근차근 코딩에 대한 기초 감각을 길러 보세요.
school.programmers.co.kr
DAY6 조건문, 반복문
마지막 두 원소
문제설명
정수 리스트 num_list가 주어질 때, 마지막 원소가 그전 원소보다 크면 마지막 원소에서 그전 원소를 뺀 값을 마지막 원소가 그전 원소보다 크지 않다면 마지막 원소를 두 배한 값을 추가하여 return하도록 solution 함수를 완성해주세요.
입출력 예
num_list result
[2, 1, 6] | [2, 1, 6, 5] |
[5, 2, 1, 7, 5] | [5, 2, 1, 7, 5, 10] |
슈도코드
마지막 원소와 그 전 원소 비교하는 방법
인덱스를 뒤에붙어 세보자..!! >> num_list[-1] , num_list[-2]
마지막 원소 추가 함수 : append
전체코드
def solution(num_list):
if num_list[-1]>num_list[-2]:
num_list.append(num_list[-1] - num_list[-2])
else:
num_list.append(num_list[-1]*2)
return num_list
수 조작하기1
문제 설명 :
정수 n과 문자열 control이 주어집니다. control은 "w", "a", "s", "d"의 4개의 문자로 이루어져 있으며, control의 앞에서부터 순서대로 문자에 따라 n의 값을 바꿉니다.
- w" : n이 1 커집니다.
- "s" : n이 1 작아집니다.
- "d" : n이 10 커집니다.
- "a" : n이 10 작아집니다.
위 규칙에 따라 n을 바꿨을 때 가장 마지막에 나오는 n의 값을 return 하는 solution 함수를 완성해 주세요.
입출력 예
n control result
0 | "wsdawsdassw" | -1 |
- 수 n은 control에 따라 다음과 같은 순서로 변하게 됩니다.
- 0 → 1 → 0 → 10 → 0 → 1 → 0 → 10 → 0 → -1 → -2 → -1
- 따라서 -1을 return 합니다.
슈도코드
리스트를 받아서 순서대로 w,s,d,a일때 규칙 정하기 / 대입 연산자 사용하기
전체코드
def solution(n, control):
for i in control:
if i=="w":
n +=1
elif i=="s":
n -=1
elif i=="d":
n +=10
else:
n -=10
return n
**다른 사람의 풀이를 봤을 때는 dict 사전에 넣어서 지정해서 푸는 방법도 있었음
수 조작하기2
문제 설명 :
정수 배열 numLog가 주어집니다. 처음에 numLog[0]에서 부터 시작해 "w", "a", "s", "d"로 이루어진 문자열을 입력으로 받아 순서대로 다음과 같은 조작을 했다고 합시다.
- "w" : 수에 1을 더한다.
- "s" : 수에 1을 뺀다.
- "d" : 수에 10을 더한다.
- "a" : 수에 10을 뺀다.
그리고 매번 조작을 할 때마다 결괏값을 기록한 정수 배열이 numLog입니다. 즉, numLog[i]는 numLog[0]로부터 총 i번의 조작을 가한 결과가 저장되어 있습니다. 주어진 정수 배열 numLog에 대해 조작을 위해 입력받은 문자열을 return 하는 solution 함수를 완성해 주세요.
입출력 예
log result
[0, 1, 0, 10, 0, 1, 0, 10, 0, -1, -2, -1] | "wsdawsdassw" |
입출력 예 #1은 "수 조작하기 1" 문제의 입출력 예 #1과 같은 예시이므로 참고하시기 바랍니다.
슈도코드
수 조작하기1의 입력을 예측하는 문제...!!
log 리스트를 하나씩 돌리고 그 전과 현재 차이가 무엇인지에 따라 w/s/d/a 추가하면 되겠다..!!
전체코드
def solution(numLog):
operations = []
for i in range(1, len(numLog)):
diff = numLog[i] - numLog[i-1]
if diff == 1:
operations.append("w")
elif diff == -1:
operations.append("s")
elif diff == 10:
operations.append("d")
elif diff == -10:
operations.append("a")
return "".join(operations)
**마지막 코드 헷갈: 전체 리스트 반환 "" 공백없이
수열과 구간쿼리 3
문제 설명
정수 배열 arr와 2차원 정수 배열 queries이 주어집니다. queries의 원소는 각각 하나의 query를 나타내며, [i, j] 꼴입니다.
각 query마다 순서대로 arr[i]의 값과 arr[j]의 값을 서로 바꿉니다.
위 규칙에 따라 queries를 처리한 이후의 arr를 return 하는 solution 함수를 완성해 주세요.
입출력 예시
arr queries result
[0, 1, 2, 3, 4] | [[0, 3],[1, 2],[1, 4]] | [3, 4, 1, 0, 2] |
입출력 예 #1
arr
[0, 1, 2, 3, 4] |
[3, 1, 2, 0, 4] |
[3, 2, 1, 0, 4] |
[3, 4, 1, 0, 2] |
- 따라서 [3, 4, 1, 0, 2]를 return 합니다.
슈도코드
리스트나 변수값 서로 바꿀 때는
a, b = b,a 로 바꿔도 됨
리스트는 a[i], a[j] = a[j], a[i]
전체코드
def solution(arr, queries):
for query in queries:
i, j = query
arr[i], arr[j] = arr[j], arr[i]
return arr
수열과 구간쿼리 2
문제 설명
정수 배열 arr와 2차원 정수 배열 queries이 주어집니다. queries의 원소는 각각 하나의 query를 나타내며, [s, e, k] 꼴입니다.각 query마다 순서대로 s ≤ i ≤ e인 모든 i에 대해 k보다 크면서 가장 작은 arr[i]를 찾습니다.각 쿼리의 순서에 맞게 답을 저장한 배열을 반환하는 solution 함수를 완성해 주세요.단, 특정 쿼리의 답이 존재하지 않으면 -1을 저장합니다.
입출력 예
arr queries result[0, 1, 2, 4, 3] | [[0, 4, 2],[0, 3, 2],[0, 2, 2]] | [3, 4, -1] |
- 첫 번째 쿼리의 범위에는 0, 1, 2, 4, 3이 있으며 이 중 2보다 크면서 가장 작은 값은 3입니다.
- 두 번째 쿼리의 범위에는 0, 1, 2, 4가 있으며 이 중 2보다 크면서 가장 작은 값은 4입니다.
- 세 번째 쿼리의 범위에는 0, 1, 2가 있으며 여기에는 2보다 큰 값이 없습니다.
- 따라서 [3, 4, -1]을 return 합니다.
슈도코드
우선 s~e 순서로 만든 배열을 만듬.
이 배열 처음 인자부터 k와 비교. 그래서 크면 k뽑자 그리고 그걸 추가하자
전체코드
def solution(arr, queries):
answer = []
for query in queries:
s, e, k = query
tmp = sorted(arr[s:e+1]) # 수정된 부분
res = next((x for x in tmp if x>k), -1)
answer.append(res)
return answer
** 처음에 next를 안썼는데 next를 써야함. next 쓰면 리스트, 튜플, 문자열, 세트, 딕셔너리 등에서 반복 가능한 객체에 해당해서 이 값을 가져올 반복 가능한 객체!!
'[코테준비] > [코테준비]Python' 카테고리의 다른 글
[코테준비]프로그래머스 코딩 기초 트레이닝 DAY8 Python <조건문, 문자열> (0) | 2023.07.30 |
---|---|
[코테준비]프로그래머스 코딩 기초 트레이닝 DAY7 Python <반복문> (0) | 2023.07.29 |
[코테준비]]프로그래머스 코딩 기초 트레이닝 Python <<조건문>> DAY5 (1) | 2023.06.29 |
[코테준비]]프로그래머스 코딩 기초 트레이닝 Python <<연산, 조건문>> DAY3~DAY4 (0) | 2023.06.27 |
[코테준비]프로그래머스 코딩 기초 트레이닝 Python DAY1~DAY2 출력 (2) | 2023.06.10 |