2024.04.26 계륵 일기

E woo·2024년 5월 1일

계륵 일기

목록 보기
26/31
post-thumbnail

💻 코딩 테스트

vector 의 back 할당

프로그래머스 LV1 : 햄버거 만들기

vector 안의 요소가 1231 이 되는지 확인하면 되는 로직이지만
index 가 처음으로 계속 다시 돌아갈 경우 시간초과가 발생한다.

그러므로 vector 탐색을 한번으로 끝내는 방법을 사용해야 하는데
vector 의 back 을 평소처럼 불러서 쓰는 방법이 아닌 할당하는 방법으로 위의 문제를 해결 가능했다.

int solution(vector<int> ingredient) {
    int answer = 0;
    
    vector<int> v = { -1 };
    
    for (int i : ingredient)
    {
        if (v.back() == 1 && i == 2)
            v.back() = 12;
        else if (v.back() == 12 && i == 3)
            v.back() = 123;
        else if (v.back() == 123 && i == 1)
        {
            answer++;
            v.pop_back();
        }
        else
            v.push_back(i);
    }
    return answer;
}

최소한의 시간으로 배열 요소 비교

프로그래머스 LV1 : 숫자 짝꿍

두 개의 문자열을 서로 비교해서 겹치는 문자를 찾아야하는 문제인데 여기서 단순히 중첩
반복문을 쓸 경우 입력 범위가 너무 커서 시간 초과가 된다.

따라서 단순히 문자의 개수를 세고 이를 통해 겹치는 부분을 계산하는 로직으로
map (혹은 1차원 배열) 을 이용한다.

string solution(string X, string Y) {
    string answer = "";
    map<char, int> x_map;
    map<char, int> y_map;
    
    for(char x : X)
        x_map[x]++;
    for(char y : Y)
        y_map[y]++;
    
    for(int i = 9; i >= 0; i--)
    {
        int n = min(x_map['0' + i], y_map['0' + i]);
        for(int j = 0; j < n; j++)
            answer += i + '0';
    }    
    
    if (answer == "")
        answer = "-1";
    
    else if (answer[0] == '0')
        answer = "0";
    
    return answer;
}

🌿 자바

String 과 StringBuilder

요즘 C++ 코드로 프로그래머스를 풀고 자바로 코드를 바꿔보면서 자바를 좀 더 익히고 있는데

위의 숫자 짝꿍을 자바로 푸는 코드를 보고 있는데 String 타입이 있는데도 StringBuilder를
사용하는 것을 보고 왜 사용하는 지 궁금해져 조금 찾아보았다.

참고자료

profile
뒘벼

0개의 댓글