파이썬/코드업 100제

[코드업100제] 6095 바둑판에 흰돌 놓기

개발_장 2024. 11. 7. 22:23

 

내가 풀은 정답

n = int(input())  값 입력
 
 
 
A = [  ]                             
for i in range(19):
    B = []
    for j in range(19):
        B.append(0)
    A.append(B)    
  # 이중 리스트로 19*19 사이즈 바둑판 만들기
 
1. 리스트 A 생성
2. 외부 for문에서 B라는 리스트를 만들고 
3. 내부 for문에서 B에 0을 추가함(19번 반복)
4. 0이 19개 있는 리스트 B를 리스트 A에 추가함
5. 2번으로 돌아가서 반복 
6. 0이 19개 있는 리스트 B를 19번만들고 그만큼 A에 추가하여 바둑판을 만들음
 
          ----> B에 0을 19개 채우면 A에 추가, 이를 B가 19번 생성될 때까지 반복  
 
 
for w in range(n):
    x,y = input().split()                                            
    x = int(x)
    y = int(y)
    A[x-1][y-1] = 1
 
# 값 입력
1. 좌표 x,y를 n번 입력함                 #1 1   2 2   3 3   4 4   5 5를 5번 입력
2. 문자열에서 숫자로 변환
3. 좌표를 기반으로 인덱싱을 사용하여 0을 1로 바꿈
 
for e in A:
    print(' '.join(map(str, e)))
#출력
1. 리스트 A의 요소를 map과 str을 통해 문자열로 만들음       [0,0,0,0.....0]   ->   ["0", "0", "0", ...."0"]
2. join을 통해 리스트 내 문자열을 공백으로 구분하여 결합     ["0", "0", "0", ...."0"]     -> " 0 0.... 0"
3. "0 0 0 0...0"을 A리스트의 요소의 수(리스트 B의 수 = 19)만큼 출력
 
 
결과
1행1열,  2행2열, 3행3열, 4행4열, 5행5열의 0이 1로 바뀜
      
 
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

 

+추가

 

바둑판 생성 방식을 위의 두 방법으로 대체하여도 결과는 같음