두치의 개발공부

BaekJoon_1236 (성 지키기) 본문

알고리즘

BaekJoon_1236 (성 지키기)

Du_chi 2022. 7. 5. 07:33

문제

https://www.acmicpc.net/problem/1236

 

1236번: 성 지키기

첫째 줄에 성의 세로 크기 N과 가로 크기 M이 주어진다. N과 M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 성의 상태가 주어진다. 성의 상태는 .은 빈칸, X는 경비원이 있는 칸이다

www.acmicpc.net

 

문제풀이

모든 행과 열 에서 경비원을 다 세울 수 있는 경우의 수를 따져야한다.

처음에 문제를 자세히 안 읽고 행만 따지고 예제를 입력하였는데 다 통과하여 제출하였더니 실패하여 당황하였다...

문제를 처음부터 꼼꼼히 읽도록 하자.

풀이는 행과 열에서의 각각의 경우에서 경비원을 세울 수 있는 수를 카운트 하여, 둘 중에 큰 수를 반환하면 된다.

행과 열중 어디에 놓든간에 큰 수를 선택하게 되면 작은 수는 자동으로 채워질 것 이기 때문이다.

 

소스코드

const answer = ([input,...n]) => {

    // 2차 배열 생성
    const arr = n.map(data => data.split(''));

    let cnt1 = 0; // 가로
    let cnt2 = 0; // 세로

    // 가로에 경비원을 세울 수 있는 경우의 수
    arr.forEach(data => {
        if(data.indexOf('X') === -1){
            cnt1 ++;
        }
    })

    // 세로에 경비원을 세울 수 있는 경우의 수
    for (let index = 0; index < arr[0].length; index++) {
        const temp = [];
        for (let index2 = 0; index2 < arr.length; index2++) {
            temp.push(arr[index2][index]);
        }
        if(temp.indexOf('X') === -1){
            cnt2 ++;
        }
    }


    // 가로 세로 경우의 수 중 큰 값
    const cnts = [cnt1,cnt2];
    console.log(Math.max(...cnts))
}

const input = [];
require("readline")
    .createInterface(process.stdin, process.stdout)
    .on("line", (line) => {
        input.push(line);
    })
    .on("close", () => {
        answer(input);
        process.exit();
    });

 

소스코드는 깃헙에서도 확인할 수 있습니다 🤗

https://github.com/duduchi/Algorithm/blob/main/Search/BaekJoon_1236.js

 

GitHub - duduchi/Algorithm: 알고리즘 이론 및 구현 소스 정리 프로젝트 입니다.

알고리즘 이론 및 구현 소스 정리 프로젝트 입니다. Contribute to duduchi/Algorithm development by creating an account on GitHub.

github.com

 

'알고리즘' 카테고리의 다른 글

BaekJoon_2667 (단지번호붙이기)  (0) 2022.07.11
BaekJoon_1668(트로피 진열)  (0) 2022.06.29
BaekJoon_1032(베스트셀러)  (0) 2022.06.28
BaekJoon_1568(새)  (0) 2022.06.27
BaekJoon_1543(문서 검색)  (0) 2022.06.23