학습(0)/C++ 문제풀이
프로그래머스.입문.외계행성 나이
누가 뭐래도 개발자
2025. 2. 17. 01:20
1. 1 = a... 9 = i 로 대응.
2. int를 받아 string 출력.
#include <string>
#include <iostream>
using namespace std;
string solution(int age) {
//1. 문자열로 받는다.
string str = to_string(age);
string answer = "";
//2.문자로 끊어 아스키 코드로 치환하여 출력한다. (보정값: +49)
for (char c : str)
{
answer.push_back((int)c + 49);
}
return answer;
}
gemini
숫자를 자릿수로 끊어서 + '0' => 문자로 치환
생각만 하고 + '0' 기억안나서 포기했던 거였는데 역시 해보는 게 중요하다.
#include <iostream>
#include <string>
std::string solution(int age) {
std::string answer = "";
while (age > 0) {
answer.push_back((age % 10) + '0'); // 10으로 나눈 나머지를 문자로 변환하여 추가
age /= 10; // 10으로 나누어 다음 자릿수 계산
}
std::reverse(answer.begin(), answer.end()); // 문자열 뒤집기
std::cout << answer << std::endl;
return answer;
}
자바는 map으로 했었네.
왜 저리 복잡하게 했냐.
import java.util.HashMap;
class Solution {
public static String solution(int age) {
HashMap<Integer, String> mapping = new HashMap<>();
mapping.put(0, "a");
mapping.put(1, "b");
mapping.put(2, "c");
mapping.put(3, "d");
mapping.put(4, "e");
mapping.put(5, "f");
mapping.put(6, "g");
mapping.put(7, "h");
mapping.put(8, "i");
mapping.put(9, "j");
if (age < 10) { //1자릿수인 경우
return mapping.get(age);
} else if (age < 100) { //2
int carry = age / 10;
int remainder = age % 10;
return mapping.get(carry) + mapping.get(remainder);
} else if (age < 1000) { //3
int carry2 = age / 100;
int remainder = age % 100;
int carry1 = remainder / 10;
remainder = remainder % 10;
return mapping.get(carry2) + mapping.get(carry1) + mapping.get(remainder);
} else {// 1000
return "baaa";
}
}
}
cpp, java 속도 차이 보게