[코드업] Python 기초 100제 6093~6095번
참고: https://codeup.kr/problemsetsol.php
✔️ 코드업 파이썬 기초 100제 [6093번]
영일이는 또 호기심을 품고 해보고 싶은게 생겼다.
영일이 하고 싶은 거 다해~..
해당 문제에 대한 풀이는 다음과 같이 풀었다.
n = int(input())
data = list(map(int, input().split()))
for i in range(n-1, -1, -1):
print(data[i], end=' ')
역순으로 출력하는 함수를 사용해도 되지만,
가장 먼저 생각난 것이 for 문의 step을 역순으로 하여
하나씩 출력해주는 것이 떠올라서 이렇게 풀었다.
✔️ 코드업 파이썬 기초 100제 [6094번]
영일이가 또 출석에 미련을 가지게 되는데,
이 문제에 대해서 푼 방법은 총 2가지이고,
모범 답안이 가장 참고할만하다.
n = int(input())
data = list(map(int, input().split()))
print(min(data))
제일 먼저 그리고 제일 빠르게 푼 방법은 다음과 같은데,
문제에서 받는 입력을 리스트로 저장한 다음,
가장 작은 값을 min 함수로 출력하는 것이다.
n = int(input())
data = list(map(int, input().split()))
for i in range(n):
for j in range(1, n):
temp = 0
if data[j-1] > data[j]:
temp = data[j]
data[j] = data[j-1]
data[j-1] = temp
else:
continue
print(data[0])
두 번째 방법은 정렬을 이용하는 것인데,
인덱스의 앞과 뒤를 비교하여 정렬을 시켜준다.
이렇게해도 문제가 풀리지만,
시간복잡도가 많이 증가하여 시간이 오래 걸린다는
단점이 존재한다.
n = int(input())
a = input().split()
for i in range(n) :
a[i] = int(a[i])
result = a[0]
for i in range(0, n) :
if a[i] < result :
result = a[i]
print(result)
모범 답안과 동일한데,
코드를 자세히 들여다보면,
작은 값을 계속해서 result에 저장하고
끝까지 탐색하여 출력하는 것을 알 수 있다.
이것이 두 번째 방법보다 시간복잡도를 줄이면서
출력하는 가장 모범적인 답안인 것 같다.
✔️ 코드업 파이썬 기초 100제 [6095번]
이번 문제부터 영일이의 호기심 난이도가 급상승한다.
또한, 리스트 컴프리헨션을 참고하여 코드 풀이를 진행하였다.
해당 문제에 대한 풀이는 다음처럼 작성하였다.
n = int(input())
data = [[0 for _ in range(19)] for _ in range(19)]
for i in range(n):
x, y = map(int, input().split())
data[x-1][y-1] = 1
for i in range(19):
for j in range(19):
print(data[i][j], end=' ')
print()
리스트 컴프리헨션으로 2차원 배열을 0으로 초기화하였다.
여기서 계속 틀린 답안으로 나왔는데,
바둑판이 19x19여서 range는 19로 해주어야 한다..
map을 돌면서 x와 y 좌표를 받고,
for문을 돌면서 해당하는 좌표를 1로 바꿔주는 코드를 구상하였다.
남은 문제도 화이팅 💪