본문 바로가기

알고리즘 (Python)/코드업 기초 100제

[CodeUp] 코드업 기초 100제 6095번 풀이 - 파이썬(python)

728x90
반응형

6095 : [기초-리스트] 바둑판에 흰 돌 놓기(설명)(py)

시간 제한 : 1초 메모리 제한 : 128 MB

 


 

문제 설명

 

기숙사 생활을 하는 학교에서 어떤 금요일(전원 귀가일)에는 모두 집으로 귀가를 한다.

오랜만에 집에 간 영일이는 아버지와 함께 두던 매우 큰 오목에 대해서 생각해 보다가
"바둑판에 돌을 올린 것을 프로그래밍 할 수 있을까?"하고 생각하였다.

바둑판(19 * 19)에 n개의 흰 돌을 놓는다고 할 때,
n개의 흰 돌이 놓인 위치를 출력하는 프로그램을 작성해보자.

입력

 

바둑판에 올려 놓을 흰 돌의 개수(n)가 첫 줄에 입력된다.
둘째 줄 부터 n+1 번째 줄까지 힌 돌을 놓을 좌표(x, y)가 n줄 입력된다.
n은 10이하의 자연수이고 x, y 좌표는 1 ~ 19 까지이며, 똑같은 좌표는 입력되지 않는다.

출력

 

흰 돌이 올려진 바둑판의 상황을 출력한다.
흰 돌이 있는 위치는 1, 없는 곳은 0으로 출력한다.

입력 예시

 

5
1 1
2 2
3 3
4 4
5 5

출력 예시

 

1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

내 풀이

 

location = []

for i in range(20):
    location.append([])
    
    for j in range(20):
        location[i].append(0)
        
n = int(input())

for i in range(n):
    x, y = map(int, input().split())
    location[x][y] = 1
    
for i in range(1, 20):
    for j in range(1, 20):
        print(location[i][j], end=" ")
        
    print()


모범 답안

 

d=[]
for i in range(20) :
  d.append([])
  for j in range(20) : 
    d[i].append(0)

n = int(input())
for i in range(n) :
  x, y = input().split()
  d[int(x)][int(y)] = 1

for i in range(1, 20) :
  for j in range(1, 20) : 
    print(d[i][j], end=' ')
  print()



해설

 

2차원 리스트를 만드는 문법이 헷갈려서 시간이 많이 걸렸습니다. 2차원 리스트를 생성하는 방법에는 2가지가 있습니다.
위의 풀이와 같이 이중 for 반복문을 통하여 생성하는 방법이 있고, a = [[0 for j in range(2)] for i in range(3)] 와 같이 리스트 표현식으로 만드는 방법이 있습니다.
저는 이중 for 반복문을 사용하여 2차원 리스트 location을 생성했고, 새로운 for 반복문으로 입력받은 위치의 값을 1로 변경해줍니다.
마지막에 저장한 모든 2차원 리스트들을 이중 for 반복문으로 print() 함수를 이용하여 출력해주면 됩니다.
728x90
반응형