profile image

L o a d i n g . . .

1096 : [기초-2차원배열] 바둑판에 흰 돌 놓기

 

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

 

참고) 바둑판에 올려 놓을 흰 돌의 개수(n)가 첫 줄에 입력된다.
둘째 줄 부터 n+1 번째 줄까지 힌 돌을 놓을 좌표(x, y)가 n줄 입력된다.

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

 

정답 :

풀이 : 먼저 for문을 중첩해서 19*19 만큼 0을 채운 바둑판(중첩된 리스트)을 만든다. 

그리고 바둑판에 올려 놓을 흰 돌의 개수가 입력되면, 그 수 만큼 반복문을 돌려서 흰 돌을 놓을 좌표(x,y)를 입력받는다.

 

그리고 입력 받은 좌표를 이용해 바둑판 상 1(흰 돌)을 할당한다.

마지막으로 for 문을 중첩해 중첩된 리스트의 모든 값을 출력한다.

 


1097 : [기초-2차원배열] 바둑알 십자 뒤집기

 

문제 : 바둑판(19 * 19)에 흰 돌(1) 또는 검정 돌(0)이 모두 꽉 채워져 놓여있을 때, n개의 좌표를 입력받아 십(+)자 뒤집기한 결과를 출력하는 프로그램을 작성해보자.

 

참고) 바둑알이 깔려 있는 상황이 19 * 19 크기의 정수값으로 입력된다. 그 다음 십자 뒤집기 횟수(n)가 입력된다.

 

정답 : 

풀이 : 먼저 바둑알이 깔려 있는 상황을 19 * 19 크기의 정수값으로 입력받아야 하는데, 한 줄씩 19번 입력받으면 된다.

그리고 십자 뒤집기 횟수(n)을 입력 받으면, n 만큼 반복문을 돌려 십자 뒤집기 좌표를 입력 받는다.

 

그래서 for 문을 이용해 가로 줄 흑<->백을 바꿔준 뒤, 세로 줄 흑 <->백도 바꿔주면 된다.

그리고 마지막에 for 문을 중첩해 리스트 내의 모든 값을 출력해준다.

 


1098 : [기초-2차원배열] 설탕과자 뽑기

 

문제 : 격자판의 세로(h), 가로(w), 막대의 개수(n), 각 막대의 길이(l), 막대를 놓는 방향(d:가로는 0, 세로는 1)과
막대를 놓는 막대의 가장 왼쪽 또는 위쪽의 위치(x, y)가 주어질 때, 격자판을 채운 막대의 모양을 출력하는 프로그램을 만들어보자.

 

설명 :

풀이 : 먼저 for 문을 중첩해 입력된 세로(h), 가로(w) 만큼 0으로 채운 격자판(중첩된 리스트)를 만든다.

그리고 막대의 개수(n)을 입력 받은 다음, 입력된 n만큼 반복문을 돌린다.

 

반복문 내에서 막대의 길이(l), 방향(d), 좌표(x,y)를 입력 받고,

if 조건문을 이용해 방향이 가로(0)일 때, 세로(1)일 때로 나눈다.

 

그리고 방향이 가로일 때는 for 문을 이용해 가로 방향으로 막대의 길이만큼의 좌표 값을 1로 바꾼다.

또 방향이 세로일 때도 for문을 이용해 세로 방향으로 막대의 길이만큼의 좌표 값을 1로 바꾼다.

 


1099 : [기초-2차원배열] 성실한 개미

 

문제 : 미로 상자에 넣은 개미는 먹이를 찾았거나, 더 이상 움직일 수 없을 때까지 오른쪽 또는 아래쪽으로만 움직인다.

미로 상자의 구조가 0(갈 수 있는 곳), 1(벽 또는 장애물)로 주어지고, 먹이가 2로 주어질 때, 성실한 개미의 이동 경로를 예상해보자.

단, 맨 아래의 가장 오른쪽에 도착한 경우, 더 이상 움직일 수 없는 경우, 먹이를 찾은 경우에는 더이상 이동하지 않고 그 곳에 머무른다고 가정한다.

미로 상자의 테두리는 모두 벽으로 되어 있으며, 개미집은 반드시 (2, 2)에 존재하기 때문에 개미는 (2, 2)에서 출발한다.

 

정답 :

풀이 : 먼저 10*10 크기의 미로 상자를 입력받아야 하는데, 한 줄씩 10번 입력받으면 된다.

그리고 개미집이 위치한 (2,2)부터 시작해서 while 문을 통해 이동한다.

 

먼저 현재 위치를 체크하는데, 현재 위치가 0이면 9를 할당해주고, 현재 위치가 2이면 9를 할당해준 뒤 빠져나오게 한다.

또 맨 아래의 가장 오른쪽일 경우 또는 오른쪽과 아래쪽이 모두 1(벽 또는 장애물)일 경우는 break를 통해 빠져나온다.

 

그리고나서 이제 이동을 하는데 오른쪽이 1(벽 또는 장애물)이 아닐 경우 오른쪽으로 한 칸 이동하고, 아래 쪽이 1일 아닐 경우 아래 쪽으로 한 칸 이동한다.

복사했습니다!