🧐
cote ) til - 20240328
March 28, 2024
2016년
문제 설명
2016년 1월 1일은 금요일입니다. 2016년 a월 b일은 무슨 요일일까요? 두 수 a ,b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요. 요일의 이름은 일요일부터 토요일까지 각각 SUN,MON,TUE,WED,THU,FRI,SAT
입니다. 예를 들어 a=5, b=24라면 5월 24일은 화요일이므로 문자열 “TUE”를 반환하세요.
제한 조건
- 2016년은 윤년입니다.
- 2016년 a월 b일은 실제로 있는 날입니다. (13월 26일이나 2월 45일같은 날짜는 주어지지 않습니다)
입출력 예
a | b | result |
---|---|---|
5 | 24 | “TUE” |
```python | ||
# 내 마음데로 풀어보기 | ||
# 윤력은 2월 마지막이 29일 | ||
# 30, 31일 조심! 1, 3, 5, 7, 8, 10, 12월이 31일이가 | ||
def solution(a, b): |
monthDay = {1: 31, 2: 29, 3:31, 4:30, 5:31, 6:30, 7:31, 8:31, 9:30, 10:31, 11:30, 12:31}
day = {0:"FRI", 1: "SAT", 2: "SUN", 3:"MON" ,4:"TUE" ,5:"WED" , 6:"THU"}
dayCounter = 0;
for i in range (1, a):
dayCounter += monthDay[i]
dayCounter += b
dayCounter = dayCounter % 7 - 1
if dayCounter < 0:
dayCounter = 6
return day[dayCounter]
```python
# 축약형
def solution(a, b):
monthDay = {1: 31, 2: 29, 3:31, 4:30, 5:31, 6:30, 7:31, 8:31, 9:30, 10:31, 11:30, 12:31}
day = {-1: "THU", 0:"FRI", 1: "SAT", 2: "SUN", 3:"MON" ,4:"TUE" ,5:"WED" , 6:"THU"}
dayCounter = (sum(monthDay[x] for x in range(1, a)) + b) % 7 - 1
return day[dayCounter]
# 1) a 이전 달의 일수 계산
# 2) b 일수 합치기
# 3) % 7 하고 남은 달 기준 넣으면 됨. 1일이 금요일이니 1일이면 토, ~ 0일 남으면 금요일임
가운데 글자 가져오기
문제 설명
단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다.
재한사항
- s는 길이가 1 이상, 100이하인 스트링입니다.
입출력 예
s | return |
---|---|
“abcde” | “c” |
“qwer” | “we” |
```python | |
#남이 푼 정답 | |
# 내꺼도 비슷하나, 이정도로 줄이는 것도 나쁘지 않아 보여서 가져옴 | |
# 홀수글자 3이 들어오면 결국 중간은 2이다. 이때 앞부분은 3 - 1 로 2가 되고, 몫이 1이 되면서, 1:2 이렇게 바뀌게 된다. | |
def solution(s): |
return s[(len(s) - 1) // 2: len(s) // 2 + 1]
# 같은 숫자는 싫어
###### 문제 설명
배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은 수들을 반환할 때는 배열 arr의 원소들의 순서를 유지해야 합니다. 예를 들면,
- arr = [1, 1, 3, 3, 0, 1, 1] 이면 [1, 3, 0, 1] 을 return 합니다.
- arr = [4, 4, 4, 3, 3] 이면 [4, 3] 을 return 합니다.
배열 arr에서 연속적으로 나타나는 숫자는 제거하고 남은 수들을 return 하는 solution 함수를 완성해 주세요.
##### 제한사항
- 배열 arr의 크기 : 1,000,000 이하의 자연수
- 배열 arr의 원소의 크기 : 0보다 크거나 같고 9보다 작거나 같은 정수
---
##### 입출력 예
|arr|answer|
|---|---|
|[1,1,3,3,0,1,1]|[1,3,0,1]|
|[4,4,4,3,3]|[4,3]|
##### 입출력 예 설명
입출력 예 #1,2
문제의 예시와 같습니다.
```python
# set 으로 사용하는 문제 아님!
# 컴프리헨션 사용으로 쉽게 해결 가능
def solution(arr):
return list(x for i, x in enumerate(arr) if i == 0 or (i != 0 and (arr[i - 1] != x)))
나누어 떨어지는 배열
문제 설명
array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요.
divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요.
제한사항
- arr은 자연수를 담은 배열입니다.
- 정수 i, j에 대해 i ≠ j 이면 arr[i] ≠ arr[j] 입니다.
- divisor는 자연수입니다.
- array는 길이 1 이상인 배열입니다.
입출력 예
arr | divisor | return |
---|---|---|
[5, 9, 7, 10] | 5 | [5, 10] |
[2, 36, 1, 3] | 1 | [1, 2, 3, 36] |
[3,2,6] | 10 | [-1] |
입출력 예 설명
입출력 예#1
arr의 원소 중 5로 나누어 떨어지는 원소는 5와 10입니다. 따라서 [5, 10]을 리턴합니다.
입출력 예#2
arr의 모든 원소는 1으로 나누어 떨어집니다. 원소를 오름차순으로 정렬해 [1, 2, 3, 36]을 리턴합니다.
입출력 예#3
3, 2, 6은 10으로 나누어 떨어지지 않습니다. 나누어 떨어지는 원소가 없으므로 [-1]을 리턴
# 최초 버전
def solution(arr, divisor):
answer = sorted([x for x in arr if x % divisor == 0])
if len(answer) == 0:
return [-1]
return answer
# 더 줄인 버전
def solution(arr, divisor):
answer = sorted([x for x in arr if x % divisor == 0])
return answer if len(answer) != 0 else [-1]