ㅋㅋㅋ 8주차 어디갔냐고 물어보시면 저도 몰라요...
백년만에 문제 푸는 것 같아서 쉬운 것부터 풀겠습니다!
https://www.acmicpc.net/problem/2920
import sys
scale = list(map(int, sys.stdin.readline().split()))
if scale == list(range(1,9)):
print("ascending")
elif scale == list(range(1,9))[::-1]:
print("descending")
else:
print("mixed")
첫째 줄에 8개 숫자가 주어진다. 이 숫자는 문제 설명에서 설명한 음이며, 1부터 8까지 숫자가 한 번씩 등장한다. 1부터 8까지 차례대로 나온다면 ascending, 8부터 1까지 차례대로 연주한다면 descending, 둘 다 아니라면 mixed를 출력해라.
> 쉬운 문제인데도 list(map(int~.split()))이나 range로만 쓰는게 아닌 list(range)등이 헷갈려 10~20분은 족히 쓴 것 같다. 역시 이래서 문제를 계속 풀어야 하나보다ㅠ
> reverse메소드는 반환값이 없어 reversed한 것을 출력하면 none이 나온다. 따라서 iteration을 하려면 reversed(iterate대상)으로 쓴다. 아니면 리스트명[::-1]을 사용. 참고로 수행 시간은 리스트[::-1]이 더 짧다.
https://www.acmicpc.net/problem/2475
import sys
nums = list(map(int, sys.stdin.readline().split()))
temp = 0
for i in nums:
temp = temp+i**2
print(temp%10)
검증수는 고유번호의 처음 5자리에 들어가는 5개의 숫자를 각각 제곱한 수의 합을 10으로 나눈 나머지이다. 첫째 줄에 고유번호의 처음 5자리의 숫자들이 빈칸을 사이에 두고 하나씩 주어진다. 검증수를 출력하라.
https://www.acmicpc.net/problem/2908
import sys
a, b = str, sys.stdin.readline().split()
if str(a)[::-1] > str(b)[::-1]:
print(str(a)[::-1])
else:
print(str(b)[::-1])
상수는 수를 다른 사람과 다르게 거꾸로 읽는다. 734와 893을 칠판에 적었다면, 상수는 이 수를 437과 398로 읽는다. 따라서, 상수는 두 수중 큰 수인 437을 큰 수라고 말할 것이다. 상수의 대답을 출력하라.
> 문자열도 [::-1]로 뒤집을 수 있나? 싶어서 해봤는데 되길래 활용해봤다. 하지만 더 짧게 혹은 더 간단하게 짤 수 있었을 것 같아 아쉽다.
그럼 이제 원래라면 파이썬 스터디 6주차 백준 내용인 '정렬' 풀어보겠씀니다!!
https://www.acmicpc.net/problem/11651
import sys
n = int(sys.stdin.readline())
coordinates = []
for i in range(n):
x, y = map(int, sys.stdin.readline().split())
coordinates.append([y, x])
for y, x in sorted(coordinates):
print(x, y)
2차원 평면 위의 점 N개가 주어진다. 좌표를 y좌표가 증가하는 순으로, y좌표가 같으면 x좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오.
> 생각한 방식이 있는데 계속 그대로 안 되길래 결국 구글링 했다. 그리고 코드를 보자 마자 왜 안됐는지 바로 앎..
> 리스트 안의 리스트로 풀어야겠단 것 까진 생각했는데 (아예 a = list(map~)으로 받아 그 리스트를 넣어줬음) 이것 때문인지 sort(key=~)를 쓰기도 애매하다 생각했다. 따로 받았다가 리스트 형식으로 append해주고 출력할때는 또 다르게 출력한다는 게 새삼 신기...
> 다음에 한번 더 풀어야겠다
> 도움받은 블로그 : https://wook-2124.tistory.com/473
https://www.acmicpc.net/problem/11650
import sys
n = int(sys.stdin.readline())
coordinates = []
for i in range(n):
x, y = map(int, sys.stdin.readline().split())
coordinates.append([x, y])
for x, y in sorted(coordinates):
print(x, y)
2차원 평면 위의 점 N개가 주어진다. 좌표를 x좌표가 증가하는 순으로, x좌표가 같으면 y좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오.
> 11651보다 쉬운데(따로 x,y를 설정해주지 않고 그냥 sort를 해도 풀릴 것 같은데..?) 정답비율이 낮은 이유가 "제출한 사람의 수가 11651에 비해 많기 때문" 인 것 같다. 이거야 말로 통계의 오류가 아닐까 ㅋㅎ...
for i in range(n):
nums = list(map(int, sys.stdin.readline().split()))
coordinates.append(nums)
for i in sorted(coordinates):
print(i[0], i[1])
https://www.acmicpc.net/problem/1181
import sys
n = int(sys.stdin.readline())
sent = []
for i in range(n):
temp = sys.stdin.readline().strip()
if temp not in sent:
sent.append(temp)
sent = sorted(sent) #우선 사전 순으로 정렬
sent.sort(key=len) #그리고 길이 순으로 정렬
for i in sent:
print(i)
알파벳 소문자로 이루어진 N개의 단어가 들어오면 아래와 같은 조건에 따라 정렬하는 프로그램을 작성하시오. 단, 같은 단어가 여러 번 입력된 경우에는 한 번씩만 출력.
- 길이가 짧은 것부터
- 길이가 같으면 사전 순으로
> 중복값을 제거하는 방법으로는1)list(set(리스트명))랑 2)for문으로 같은 게 있다면 추가하지 않는 방법이 있다.
> 공식문서에는 sort(key=str.lower)만 있고 문자열 길이에 대한 건 없더라. 더 찾아보니 key=len으로 하면 되는 것 같다!
> sorted와 sort의 순서를 바꾸면 출력이 이상해진다
> 참고 : https://www.delftstack.com/ko/howto/python/sort-list-alphabetically/
'STUDY' 카테고리의 다른 글
파이썬 스터디 ver2. 1주차 (3) | 2022.03.31 |
---|---|
파이썬 스터디 10주차 (3) | 2022.03.18 |
파이썬 스터디 4주차(머신러닝)(3) (0) | 2022.03.03 |
파이썬 스터디 4주차(머신러닝)(2) (1) | 2022.02.22 |
파이썬 스터디 4주차(머신러닝)(1) (0) | 2022.02.21 |