알고리즘(algo)/코드업

[코드업] Python 기초 100제 6093~6095번

dDong2 2023. 1. 11. 10:55
참고: 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로 바꿔주는 코드를 구상하였다.

 

남은 문제도 화이팅 💪