코딩응애의 개발블로그

백준 2447번 본문

알고리즘 문제

백준 2447번

이너멜 2022. 8. 27. 00:18

일단 코드부터 봅시다 

const fs = require('fs');
const filePath = process.platform === 'linux' ? '/dev/stdin' : './input.txt';
let input = fs.readFileSync(__dirname + '/input.txt').toString().split('\n');

let num = +input[0];
let result = '';

function solution(i, j) {
// 일단 출력 예시를 보면 
// (1,1) (1,4) (1,7) ... 이렇게가 공백인것을 볼 수 있는데 3으로 나눈 나머지가 1이면 
// 그자리는 공백인것을 확인할 수 있다.이걸 토대로 i % 3 === 1 && j % 3 === 1 이렇게 조건을 세운다.  
    if (i % 3 === 1 && j % 3 === 1) { 
        result += ' ';
    }
    else { // 그리고 그외 나머지 부분은 다 *로 채워주어야 해서 이렇게 조건을 세워주고 
        if (Math.floor(i / 3) === 0 && Math.floor(j / 3) === 0) {
            result += '*';
        }
        else {  //  (N/3)×(N/3) 정사각형 크기의 공백이 가운데에 존재해야 함으로 
// 위에 조건에 맞지 않는것은 공백처리 해준다 만약 N이 9라면
// (3,3) ~ (3,5), (4,3) ~ (4,5), (5,3) ~ (5,5) 여기가 공백이 됨 
            solution(Math.floor(i / 3), Math.floor(j / 3));
        }
    }
}

for (let i = 0; i < num; i++) {
    for (let j = 0; j < num; j++) {
        solution(i, j); // 이중 for문을 이용해서 함수안에 인자들을 넣어줌 
    }
        result+= "\n"; // 줄바꿈을 위해 for문 다 돌기전에 줄바꿈해줌 i가 0일때 다돌고 나서 다음으로 넘어가기 전에 
}
console.log(result);

이 문제는 규칙을 찾는거 부터가 문제다. 문제를 처음 봤을때 이해하는거 부터 좀 시간이 걸렸다. 

예제 출력을 보고 문제 이해를 겨우 해도 그다음 어떻게 구현을 해야 할지 막막하다.

그래서 구글링 해서 답을 봤는데 봐도 이해가 잘 안감 ㅋㅋ 

출처 : https://nyang-in.tistory.com/211   

 

 

 

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

백준 1074번  (1) 2022.09.20
백준 11729번  (0) 2022.08.29
백준 17478번  (0) 2022.08.26
백준 2941번 (for of 문)  (0) 2022.08.17
백준 4673번 풀면서 새롭게 알게된점  (0) 2022.08.06
Comments