728x90
programmers.co.kr/learn/courses/30/lessons/12899
가끔 이런 수학적인 풀이를 요하는 문제를 올때 조금 시간을 잡아먹는 경우가 있다.
푼 방법은.......
3을 나누어서 몫과 나머지를 구한 후
조건에 맞게 숫자를 앞에서 부터 넣어주면 된다
혹여나 나머지가 0일경우 몫을 -1 해주어야 정상적으로 풀린다.
6의 경우를 봐도 6/3==2 , 6%3 ==0 인데
몫이 2기때문에 1을 빼주지않으면 14가 나오는게 아니라 24가 나온다.
C++코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
#include <string>
#include <vector>
using namespace std;
string solution(int n) {
string answer = "";
int mok=n, namugi;
while (mok!=0) {
namugi = mok % 3;
mok = mok / 3;
if (namugi == 1)
answer = '1' + answer;
if (namugi == 2)
answer = '2' + answer;
if (namugi == 0) {
answer = '4' + answer;
mok--;
}
}
return answer;
}
|
cs |
자바스크립트 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
function solution(n) {
var answer = '';
while(n!=0){
if(n%3 == 1){
answer='1'+answer;
n=Math.floor(n/3);
}
//밑의 else if와 else를 c++에서 생각없이 쓰듯이 if로 구성하면 시간초과가뜬다
//c++이 선녀였다..
else if(n%3 ==2){
answer='2'+answer;
n=Math.floor(n/3);
}
else {
answer='4'+answer;
n=n/3-1;
}
}
return answer;
}
|
cs |
(좌)C++ / (우)자바스크립트
728x90
'PS > 프로그래머스' 카테고리의 다른 글
[프로그래머스 LV 2] 문자열 압축 C++, js (0) | 2021.04.08 |
---|---|
[프로그래머스 LV 2] 카카오프렌즈 컬러링북 C++ (0) | 2021.03.23 |
[프로그래머스 LV 2] 위장 C++ (0) | 2021.03.21 |
[프로그래머스 LV 2] 전화번호 목록 C++ (해시 풀이법 포함) (0) | 2021.03.21 |
[프로그래머스 LV 1] 완주하지 못한 선수 C++ (0) | 2021.03.21 |