[Programmers] 그림 확대

Jinny·2025년 1월 10일
0
  • 날짜 / 주차-누적 횟수: 2025.01.08(수) / 2주차-12회
  • 사이트 이름: 프로그래머스
  • 사용 언어: 자바스크립트
  • 문제 고유 번호 및 레벨: 181836 / Lev 0
  • 나의 풀이 방법:
    function solution(picture, k) {
        let result = [];
        
        picture.forEach(v => {
            const arr = v.split('')
            let oneArr = [];
    
            for (let i = 0; i < arr.length; i++) {    
                if (arr[i] === '.') {
                    oneArr += '.'.repeat(k);
                }
                if (arr[i] === 'x') {
                    oneArr += 'x'.repeat(k);
                }
            }
            for (let i = 0; i < k; i++) {
                result.push(oneArr);
            }
        });
        return result;
    }
    • 일반 for 문을 사용하여 그 안에 if 조건문으로 ‘.’, ‘x’문자를 k 번 repeat한다.
  • 최적 풀이 방법:
    function solution(picture, k) {
        var answer = [];
    
        picture.forEach((line) => {
            const expanded = [...line].reduce((acc, cur) => acc + cur.repeat(k), '');
    
            for(let i=0; i<k; i++) answer.push(expanded);
        });
    
        return answer;
    }
    • forEach()로 picture배열을 모두순회한다.
      • 각 배열 line을 배열로 변환한다.
      • reduce()메소드
        • accumaulator: callback함수의 반환 값 누적
        • currentValue: 배열의 현재 요소
      • 누적 된 반환 값 + 현재요소를 k번 repeact한다.
      • ‘’로 초기화 시킨다.
  • 배운 개념:
    • reduce() 메소드의 활용도가 넓다. 지속적으로 속지하는 것이 중요해 보인다.
    • 문자열을 배열로 쪼개어 reduce 로 접근하는 방식이 효율적이다.
    • 문자열 같은 경우 ‘’로 초기화를 시키면 된다.
profile
세상을 이롭게 하는 프론트엔드 개발자 Jinny

0개의 댓글

관련 채용 정보