본문 바로가기
Programming/Python

코드업 6095 바둑판에 흰돌놓기 - 파이썬 (Python)

by 심코딩 2022. 4. 29.

오늘은 제가 예전에 공부를 하면서 많이 풀었었던 코드업 문제중에 한개를 한번 포스팅 해보려 합니다!

코드업은 정말 파이썬 기본을 배우신 분들이 문제풀어보길 원하신다면 정말 강력추천드리는 웹사이트 입니다.

 

https://codeup.kr/

 

CodeUp

☆ 파이썬 다운로드 : 파이썬3 ☆ 무료 C언어 IDE : Code::blocks       DEV C++ ☆ 추천 온라인 IDE : C   C++11   Python3   Java ☆ 채점 가능 언어 : C, C++, JAVA, Python 3.5 ★ C++로 제출시 void main()을 사용하면

codeup.kr


문제와 입력 예시 입니다. 항상 코딩 문제를 해결하는데는 문제를 정말정말 꼼꼼히 읽어봐야 하더라구요!

 

위 말을 요약하자면, 행과 열이 19x19인 바둑판에서 흰돌을 몇개를 놓을지를 고르고, (x,y) 좌표를 입력하면 그 좌표에만 흰돌(숫자1)이 놓여지고, 그 외의 좌표에는 검은돌 (숫자0)이 놓아진다는 것이다.

 


정답 코드는 아래와 같다.

d = []             

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

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


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

이 문제는 List Comprehension 관련 문제라고 하는데, 보통 바둑판을 만든다던지 2차원으로 된 데이터 배열을 만들 때에는 좌표 문제와 같이 매개변수를 두개 만들어야 한다면 리스트 안에 리스트를 넣어 테이블을 만든 다음 그것을 이중 반복문을 통해 출력을 한다.

 

한번 코드 하나하나 분석해보도록 하자.

 

d = []             

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

일단 d라고 하는 빈 리스트를 만든다.

리스트 d에 작은 리스트 19개를 넣는다. 즉 현재 큰 리스트 (d)안에 작은 비어있는 리스트가 19개가 들어가있다.

또 그 작은 리스트 안에 0을 모두 넣는다.

 

즉, d라는 리스트 안에는 현재 0이 19개가 들어있는 리스트가 19개 들어있는 것이다.

[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] 이 19개가 들어있는 것이다.

 

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

흰돌을 놓을 갯수를 n 으로 인풋

흰돌을 놓을 좌표를 map으로 인풋 (당연히 흰돌의 갯수만큼 반복)

 

그 다음, 위에만든 d리스트에서 x,y 좌표가 찍힌 곳은 1로 만든다.

 

d[x][y] 부분이 잘 이해안될 수 있는데, 예를 들어서 d[1][2]를 입력을 했다고 하면

d에 있는 리스트중에서 두번째 리스트가 선택이 되는것이고, 그 두번째 리스트안의 세번째를 선택하는 것이다.

(* 파이썬은 숫자를 0부터 센다)

 

이제 선택된 (x,y) 좌표는 흰돌을 놓는 곳이고 1로 표시 될 것이다.

 

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

그 다음 만들어 놓은 바둑판을 이중 반복문을 통해 출력해주면 끝. 

댓글