[2021 카카오 채용연계형 인턴십] Q1. 숫자 문자열과 영단어 (C++, Python, Java)

문제 링크

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

 

예상 난이도

B2

 

알고리즘 분류

문자열

 

풀이

자세한 설명은 생략합니다. replace 함수를 이용하면 구현이 제일 편하지만 직접 if문을 가지고 짜도 상관은 없습니다. 직접 if문을 가지고 짜보면 좋은 구현 연습 문제가 될 것 같네요.

 

코드(C++)

#include <bits/stdc++.h>
using namespace std;

int solution(string s) {
    string arr[10] = {"zero","one","two","three","four","five","six","seven","eight","nine"};
    for(int i = 0; i < 10; i++){
        while(true){
            auto it = s.find(arr[i]);
            if(it == string::npos) break;
            s.replace(it, arr[i].size(), to_string(i));
        }
    }
    return stoi(s);
}

C++의 replace는 처음으로 등장하는 문자열 1개만 변경하는 함수이기 때문에 while(true)를 이용해 원하는 단어가 등장하지 않을 때 까지 replace를 해줘야 합니다.

 

코드(Python)

def solution(s):
    arr = ['zero','one','two','three','four','five','six','seven','eight','nine']
    for i in range(10):
        s = s.replace(arr[i],str(i))
    return int(s)

 

코드(Java)

import java.util.*;

class Solution {
    public int solution(String s) {
        String arr[] = {"zero","one","two","three","four","five","six","seven","eight","nine"};
        for(int i = 0; i < 10; i++)
            s = s.replaceAll(arr[i], Integer.toString(i));
        return Integer.parseInt(s);
    }
}
  Comments
댓글 쓰기