반응형

코드포스(Codeforces) 263A Beautiful Matrix 풀이 코드

C | C++ | Java | Python

Difficulty : *800 (Implementation)


문제 해설

중앙으로 가려면 몇 번 움직여야 할까요? 5*5 행렬에서 1이 중앙에 오려면 총 몇 번 움직여야 할지 출력하는 문제입니다. 1은 가로, 세로로 한 번에 한 칸씩만 움직일 수 있습니다.

풀이

5*5행렬을 입력받고 현재 1의 위치를 x, y로 저장합니다. x, y값과 중앙(3)값의 각 차이를 더한 것이 답입니다.

5*5 행렬을 입력받고 현재 1의 위치를 x, y로 저장합니다. x, y값과 중앙(3)값의 각 차이를 더한 것이 답입니다.

5*5 행렬을 입력받고 현재 1의 위치를 x, y로 저장합니다. x, y값과 중앙(3)값의 각 차이를 더한 것이 답입니다.

리스트로 행렬을 한줄씩 입력받고 현재 1의 위치를 x, y로 저장합니다. 문자열로 받았으므로 비교 시 문자 형식을 사용함에 유의합니다. x, y값과 중앙(3)값의 각 차이를 더한 것이 답입니다.

코드

#include <stdio.h>

int main(){
    int matrix[5][5];
    int i, j, x, y, dx, dy;

    for (i = 0; i < 5; i++) {
        for (j = 0; j < 5; j++) {
            scanf("%d", &matrix[i][j]);
            if (matrix[i][j] != 0) {
                x = i;
                y = j;
            }
        }
    }

    if (x >= 2) {
        dx = x - 2;
    }
    else {
        dx = 2 - x;
    }
    if (y >= 2) {
        dy = y - 2;
    }
    else {
        dy = 2 - y;
    }

    printf("%d", dx + dy);
    return 0;
}
#include <iostream>

int main(){
    int matrix[5][5];
    int x, y, dx, dy;

    for (int i = 0; i < 5; i++) {
        for (int j = 0; j < 5; j++) {
            std::cin>>matrix[i][j];
            if (matrix[i][j] != 0) {
                x = i;
                y = j;
            }
        }
    }

    if (x >= 2) { 
        dx = x - 2;
    }
    else {
        dx = 2 - x;
    }
    if (y >= 2) {
        dy = y - 2;
    }
    else {
        dy = 2 - y;
    }

    std::cout<<dx+dy;
    return 0;
}
import java.util.Scanner;

public class Main{
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int[][] matrix = new int[5][5];
		int x = 0, y = 0, dx = 0, dy = 0;
		
		for (int i = 0; i < 5; i++) {
            for (int j = 0; j < 5; j++) {
                matrix[i][j] = sc.nextInt();
                if (matrix[i][j] != 0) {
                    x = i;
                    y = j;
                }
            }
        }
        
        if (x >= 2) { 
            dx = x - 2;
        }
        else {
            dx = 2 - x;
        }
        if (y >= 2) {
            dy = y - 2;
        }
        else {
            dy = 2 - y;
        }
        System.out.println(dx+dy);
	}
}
matrix = []
x = 0
y = 0
dx = 0
dy = 0

for i in range(5):
    matrix.append(input())
for i in range(5):
    for j in range(5):
        if matrix[i][j*2] != '0':
            x = i;
            y = j;
            
if x >= 2:
    dx = x - 2
else:
    dx = 2 - x
if y >= 2:
    dy = y - 2
else:
    dy = 2 - y
print(dx+dy)

문제 출처

https://codeforces.com/contest/263/problem/A

반응형

+ Recent posts