스파르타 사전캠프는 데일리 루틴으로 알고리즘 문제와 SQL 문제가 있다.
아직 hrd net 수강신청이 완료되지 않아서 강의가 지급되지 않아, 파이썬으로 풀 수 있는 알고리즘 문제만 먼저 풀어봤다.
파이썬은 기존에 조금 배워본 적이 있지만 sql은 처음이라 빨리 강의를 듣고싶다.
아직 들을 강의가 없기도 하고 이번주는 일정이 있어서 7일차까지 문제를 미리 풀었다.
데일리 루틴의 알고리즘 문제는 프로그래머스 코딩테스트 문제들이었다.
Day 1 (05/20 월)
<코딩테스트 입문> - 두 수의 차
문제 설명
정수 num1과 num2가 주어질 때, num1에서 num2를 뺀 값을 return하도록 soltuion 함수를 완성해주세요.
제한사항
-50000 ≤ num1 ≤ 50000
-50000 ≤ num2 ≤ 50000
#<풀이>
def solution(num1, num2):
if -50000 <= num1 <= 50000 and -50000 <= num2 <= 50000:
answer = num1-num2
return answer
else:
pass
처음 풀 때는 제한사항도 코드에 넣어야 되는 줄 알아서 조금 고민했다.
여기서 return answer를 if문 안에 넣지 않고 아래와 같이 함수 마지막에 넣으니까
def solution(num1, num2):
if -50000 <= num1 <= 50000 and -50000 <= num2 <= 50000:
answer = num1-num2
else:
pass
return answer
UnboundLocalError: local variable 'answer' referenced before assignment 라는 오류가 떠서 한참 헤맸다.
저렇게 오류가 떴던 이유는 else문으로 넘어가면 answer가 정의되지 않는데 불러오라고 해서 그랬던 거였다.
그래서 정상 범위내에서는 함수가 돌아가지만 범위에서 벗어나면 오류가 뜬다.
답안은 오류나지 않도록 if문 안으로 넣어주고 else문은 그냥 pass 처리해주었다.
Day 2 (05/21 화)
<코딩테스트 입문> - 두 수의 곱
문제 설명
정수 num1, num2가 매개변수 주어집니다.
num1과 num2를 곱한 값을 return 하도록 solution 함수를 완성해주세요.
제한사항
0 ≤ num1 ≤ 100
0 ≤ num2 ≤ 100
def solution(num1, num2):
if 0 <= num1 <= 100 and 0 <= num2 <= 100:
answer = num1 *num2
return answer
앞의 문제와 똑같이 풀고 여기서는 else문을 생략해보았다.
Day 3 (05/22 수)
<코딩테스트 입문> - 몫 구하기
문제 설명
정수 num1, num2가 매개변수로 주어질 때, num1을 num2로 나눈 몫을 return 하도록 solution 함수를 완성해주세요.
제한사항
0 < num1 ≤ 100
0 < num2 ≤ 100
def solution(num1, num2):
if 0 < num1 <= 100 and 0 < num2 <= 100:
answer = num1//num2
return answer
몫을 반환해주는 // 을 사용하면 끝나는 문제였다.
Day 4 (05/23 목)
<코딩테스트 입문> - 나이 출력
문제 설명
머쓱이는 선생님이 몇 년도에 태어났는지 궁금해졌습니다. 2022년 기준 선생님의 나이 age가 주어질 때, 선생님의 출생 연도를 return 하는 solution 함수를 완성해주세요
제한사항
0 < age ≤ 120
나이는 태어난 연도에 1살이며 매년 1월 1일마다 1살씩 증가합니다.
def solution(age):
answer = 2022-age+1
return answer
연도가 2022년으로 고정되어 있으니까, 연도에서 나이를 빼주고 태어나자마자 1살이므로 1을 더해주면 된다.
(여기서부터는 한번 찾아보니까 제한사항은 문제의 범위가 그렇다는거지 직접 거를 필요는 없다길래 코드에서 제외했다.)
Day 5 (05/24 금)
<코딩테스트 입문> - 숫자 비교하기
문제 설명
정수 num1과 num2가 매개변수로 주어집니다.
두 수가 같으면 1 다르면 -1을 retrun하도록 solution 함수를 완성해주세요.
def solution(num1, num2):
if num1 == num2:
return 1
else:
return -1
같은게 아니면 무조건 다른것이므로 간단하게 코드가 완성된다.
Day 6 (05/25 토)
<코딩테스트 입문> - 두 수의 합
문제 설명
정수 num1과 num2가 주어질 때, num1과 num2의 합을 return하도록 soltuion 함수를 완성해주세요.
def solution(num1, num2):
answer = num1 + num2
return answer
덧셈만 사용해주면 되는 간단한 사칙연산 문제였다.
Day 7 (05/26 일)
<코딩테스트 입문> - 두 수의 나눗셈
문제 설명
정수 num1과 num2가 매개변수로 주어질 때, num1을 num2로 나눈 값에 1,000을 곱한 후 정수 부분을 return 하도록 soltuion 함수를 완성해주세요.
def solution(num1, num2):
answer = int(num1/num2*1000)
return answer
처음에는 round()함수를 사용해서 반올림 해주었는데, 그러니까 채점했을 때 오답이 나왔다.
그래서 int()를 사용하여 반올림이 아닌 정수 부분만 가져오도록 하니까 해결되었다.
'문제풀이 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 Lv.1] 약수의 합 (Python) (0) | 2024.07.08 |
---|---|
[프로그래머스 Lv.1] 자릿수 더하기 (Python) (0) | 2024.07.08 |
[프로그래머스 Lv.0] 짝수의 합 (Python) (0) | 2024.07.08 |
[프로그래머스 Lv.1] 숫자 문자열과 영단어 (Python) (0) | 2024.07.04 |
[프로그래머스 Lv.1] 최소직사각형 (Python) (0) | 2024.07.02 |