[프로그래머스] 1주차 문제풀이

김태민·2025년 7월 17일

코딩테스트

목록 보기
2/6

특수 문자 출력하기 (Lv 0)

const readline = require('readline');
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});

rl.on('close', function () {
   console.log("!@#$%^&*(\\'\"<>?:;");
});

처음엔 잘 몰라봐서 삽질을 좀 했으나... 잘 보면 특수문자 열에 역슬래시가 있다!

역슬래시가 있을 경우 자바스크립트에서는 이스케이프 문자로 처리하기 때문에, 
\` 출력을 위해서는 \\` 처럼 역슬래시를 두 개 써줘야한다. 

문자열 겹쳐쓰기 (Lv 0)

function solution(my_string, overwrite_string, s) {
    let my_string_cut = '';
    let overwrite_string_cut = '';
    
    my_string_cut = my_string.slice(0, s);
    my_string_cut_2 = my_string.slice(s+overwrite_string.length, my_string.length)
    
    var answer = my_string_cut + overwrite_string + my_string_cut_2;
    return answer;
}

처음에는 overwrite_string도 slice를 해야하는 줄 알았는데, 아니였다.

처음부터 s까지 slice + overwrite_string 끼워넣고 + 나머지는 다시 기존 문자열을 더하는 방식으로 구현하면 된다.

문자열 나누기 (Lv 1)

function solution(s) {
    let answer = 0;
    let count_same = 0;
    let count_diff = 0;
    let x = s[0];

    for (let i = 0; i < s.length; i++) {
        if (s[i] === x) {
            count_same++;
        } else {
            count_diff++;
        }

        if (count_same === count_diff) {
            answer++;
            x = s[i + 1];
            count_same = 0;
            count_diff = 0;
        }
    }
  
    if (count_same !== 0 || count_diff !== 0) {
        answer++;
    }

    return answer;
}

첫 Lv 1 문제였고, 문제 이해가 좀 느렸다,,,

막상 구현에 성공하고 보니 전혀 복잡한 코드가 아니라는걸 깨달았다.

문자열 처음부터 시작하여

Case 1

첫번째 문자와 같을 경우 count_same 1 증가

Case 2

첫번째 문자와 다를 경우 count_diff 1 증가

Case 3

만약 count_same과 count_diff가 다를 경우 문자열이 하나 분리되니 answer가 1 증가한다. 그리고 문자열이 분리된 곳에서 다시 처음부터 시작해야하니, 첫 문자열인 x를 다시 지정해주고, count_same과 count_diff도 초기화해준다.

Case 4

count_same과 count_diff가 다른데 문자열의 끝일 경우, 분리해준다.

profile
빠르게 성장하는 개발자

0개의 댓글