Jaeilit

별찍기 본문

알고리즘

별찍기

Jaeilit 2022. 6. 15. 21:38
728x90

문제 

 

https://programmers.co.kr/learn/courses/30/lessons/12969

 

코딩테스트 연습 - 직사각형 별찍기

이 문제에는 표준 입력으로 두 개의 정수 n과 m이 주어집니다. 별(*) 문자를 이용해 가로의 길이가 n, 세로의 길이가 m인 직사각형 형태를 출력해보세요. 제한 조건 n과 m은 각각 1000 이하인 자연수

programmers.co.kr

 

주어진 b가 가로 a 가 세로 만큼 별을 찍으면 된다.

 

for문을 얼마나 이해하고있는가에 대한 문제일까?

process.stdin.setEncoding('utf8');
process.stdin.on('data', data => {
    const n = data.split(" ");
    const a = Number(n[0]), b = Number(n[1]);

    let answer = ''
    
    for(let i=0; i<b; i++){
        for(let j=0; j<a; j++){
            answer += '*'
        }            
        
        answer +='\n'
    }
    console.log(answer)
});

아직 초보지만 BigO 를 생각해보면  5n^2 + 2 인거 같다.

제한조건 : n과 m은 각각 1000 이하인 자연수입니다.

제한조건이 1000이하가 아니면 아마 성능이 박살나서 실패하지 않았을까..??

 

다른 정답자의 코드를 보니 for 문을 쓰지 않고 repeat 라는 문자열 반복해주는 메서드를 사용했다.

process.stdin.setEncoding('utf8');
process.stdin.on('data', data => {
    const n = data.split(" ");
    const a = Number(n[0]), b = Number(n[1]);
    console.log((('*').repeat(a)+`\n`).repeat(b))
});

성능적으로도 2중 for문보다 좋았다.

728x90

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

투포인트 JS  (0) 2022.08.27
배열 검사  (0) 2022.08.23
스택구조  (0) 2022.06.23
소수 찾기  (0) 2022.06.09
알고리즘 시간계산, 정규식 치환  (0) 2021.12.08