# 3. APS/CodeUp

CodeUp # Python 기초 100제_6095_바둑판에 흰 돌 놓기

둥굴둥굴둥굴레차 2021. 7. 5. 12:47

 

 

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

python언어기초100제v1.0 : @컴퓨터과학사랑, 전국 정보(컴퓨터)교사 커뮤니티/연구회 - 학교 정보(컴퓨터)선생님들과 함께 수업/방과후학습/동아리활동 등을 통해 재미있게 배워보세요. - 모든 내용

codeup.kr

 

[문제]

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

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

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

 

[input 예시]

5
1 1
2 2
3 3
4 4
5 5

 

[output 예시]

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

 

[나의 풀이]

## 풀이 1
# 19*19의 바둑판 matrix를 만든다.
matrix = [[0 for i in range(19)] for i in range(19)]

n = int(input())

for i in range(n):
	# 놓게될 바둑 위치를 입력받고 바둑판 matrix에 표시해준다.
    position = list(map(int, input().split()))
    # output예시를 보면 (1,1)이 표시된 곳이 (0,0)에 표시되어있음.
    # 따라서 x와 y축에 1을 하나 씩 빼주었다.
    matrix[position[0]-1][position[1]-1] = 1

# 바둑을 놓은 바둑판 matrix를 출력해준다.
for j in matrix:
    print(*j)
    
    
## 풀이 2
matrix = [ [0 for _ in range(19)] for _ in range(19) ]
n = int(input())

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

for j in matrix:
	print(*j)

 

 


 


d = [[0 for j in range(20)] for i in range(20)]
# 이러한 리스트 생성 방식을 List Comprehensions 라고 한다.

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차원 형태의 데이터처럼 쉽게 기록하고 사용할 수 있다.
리스트이름[번호][번호] 형식으로 저장되어있는 값을 읽고 쓸 수 있고, 더 확장한 n차원의 리스트도 만들 수 있다.