๐ก๋ฌธ์ ์ค๋ช
์์ฐ์ n์ด ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง๋๋ค.
n์ 3์ง๋ฒ ์์์ ์๋ค๋ก ๋ค์ง์ ํ,
์ด๋ฅผ ๋ค์ 10์ง๋ฒ์ผ๋ก ํํํ ์๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ์ถ๋ ฅ ์
45 | 7 |
125 | 229 |
์ ์ถ๋ ฅ ์ #1
- n (10์ง๋ฒ)n (3์ง๋ฒ)์๋ค ๋ฐ์ (3์ง๋ฒ)10์ง๋ฒ์ผ๋ก ํํ
45 | 1200 | 0021 | 7 |
- ๋ฐ๋ผ์ 7์ return ํด์ผ ํฉ๋๋ค.
์ ์ถ๋ ฅ ์ #2
- n (10์ง๋ฒ)n (3์ง๋ฒ)์๋ค ๋ฐ์ (3์ง๋ฒ)10์ง๋ฒ์ผ๋ก ํํ
125 | 11122 | 22111 | 229 |
- ๋ฐ๋ผ์ 229๋ฅผ return ํด์ผ ํฉ๋๋ค.
๐ฉ๐ป๐ป์ ์ถํ ์ ๋ต์ฝ๋
class Solution {
public int solution(int n) {
String answer = "";
while(n > 0){
answer += n%3; n/=3;
}
return Integer.parseInt(answer,3);
}
} // n์ด 45์ผ๋ -> 0021
์ฌ์ค๋ค์ง๊ธฐ๋ ๋ฌธ์์ด์ ๊ณ์ ๋ํด์ค ๊ทธ ์ซ์๋ฅผ ๋ฐ๋ก ์ ์ฉํ๋ฉด๋์ ๊ฐ๋จํ๋ค.
๐ก๊ทธ๋ ๋ค๋ฉด ๋ค์ง๊ธฐ๊ฐ ์๋ 10์ง์ -> 3์ง์ -> 10์ง์๋ฅผ ๊ตฌํ๋ ค๋ฉด ?
class Solution {
public int solution(int n) {
String answer = "";
while(n > 0){
answer = n%3+answer; // <- ์ด๋ถ๋ถ๋ง ๋ณ๊ฒฝํด์ฃผ๋ฉด๋๋ค.
n/=3;
}
return Integer.parseInt(answer,3);
}
} // n์ด 45์ผ๋ -> 1200
์ฌ๊ธฐ์ Integer.parseInt(answer,3) ์ด ํจ์๋ ์ด๋ป๊ฒ ๋ง๋ค์ด์ง๋๊ฑธ๊น?
์ด ํจ์๋ฅผ ์ด์ฉํ์ง ์๊ณ ๊ฐ์ ๊ตฌํ๋ ๋ฐฉ๋ฒ์ ๋ฌด์์ผ๊น ?
public int solution(int num , int x) {
String s = "";
while(num > 0) {
s+=num%x;
num/=x;
}
return Integer.parseInt(s); // num์ด 45์ผ๋ -> 21
}
public int solution2(int num , int x) {
int answer = 0;
int cnt = 0;
while(num > 0) {
answer += (int) (num%10 * (Math.pow(x,cnt)));
cnt++;
num/=10;
}
return answer; // num์ด 45์ผ๋ -> 7
}
10์ง์ : 45 -> 3 ์ง์ : 21
3 ์ง์ : 21 -> 10์ง์ : 7
45 ๋ฅผ 3์ง์๋ก ๋ณํํํ ๋ค์ง์ ์ซ์ 21 ์ 10์ง์ ๋ก ๋ณํํ์๋ค.
๋ค์ง์ง ์๊ณ 10 ์ง์ -> 3 ์ง์ -> 10์ง์๋ก ๋ณํํ๋ ค๋ฉด?
public int solution(int num , int x) {
String s = "";
while(num > 0) {
s=num%x+s; // <-๐ก์ด๋ถ๋ถ๋ง ๋ณ๊ฒฝํด์ฃผ๋ฉด๋๋ค.
num/=x;
}
return Integer.parseInt(s); // num์ด 45์ผ๋ -> 1200
}
solution2 ์ ๋ถ๋ถ์ ์์ธํ ๋ด๋ณด์.
public int solution2(int num , int x) {
int answer = 0;
/* for(int i=s.length()-1; i>=0; i--) {
answer += ((int)s.charAt(i) - '0') * (Math.pow(x,(s.length()-1)-i));
}*/
//์ฌ๋ฌ ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ์์ฑํ ์ ์๋ค. ์์๊ฒฝ์ฐ String ์ผ๋ก ๋ฐ์์๋ ์๋์ ๊ฒฝ์ฐ๋ int ๋ก ๊ฐ์ ๋ฐ์๊ฒฝ์ฐ
int cnt = 0;
while(num > 0) {
answer += (int) (num%10 * (Math.pow(x,cnt))); cnt++;
num/=10;
}
return answer;
}
Math.pow(x,cnt) <- x ์ cnt ์ ๊ณฑ์ ๊ตฌํ๋ค. cnt <- ์๋ฆฟ์
java.lang.Math ํด๋์ค๋ ์ํ ๊ณ์ฐ์ ์ฌ์ฉํ ์ ์๋ ๋ฉ์๋๋ฅผ ์ ๊ณตํ๊ณ ์์ต๋๋ค.
Math ํด๋์ค๊ฐ ์ ๊ณตํ๋ ๋ฉ์๋๋ ๋ชจ๋ ์ ์ ์ด๋ฏ๋ก Import๋ Mathํด๋์ค ์ ์ธ ์์ด ๋ฐ๋ก ์ฌ์ฉ์ด ๊ฐ๋ฅํฉ๋๋ค.
Math.pow()๋ฅผ ์ด์ฉํ์ฌ ๊ฑฐ๋ญ์ ๊ณฑ์ ๊ณ์ฐํ ์ ์์ต๋๋ค.
pow๋ power๋ฅผ ์๋ฏธํ๊ณ , power์ ๋ป์ ๊ฑฐ๋ญ์ ๊ณฑ์ ๋๋ค.
pow() ์ธ์๋ก a์ b๋ฅผ ์ ๋ฌํ๋ฉฐ, a์ b ์ ๊ณฑ์ด ๋ฆฌํด๋ฉ๋๋ค.
์ฆ, a๋ฅผ b๋ฒ ๊ณฑํ ๊ฐ์ด ๋ฆฌํด๋ฉ๋๋ค.
์ ์ฒด์ฝ๋
package reverse3์ง๋ฒ;
class SolutionB{
public int solution2(int num , int x) {
int answer = 0;
int cnt = 0;
while(num > 0) {
answer += (int) (num%10 * (Math.pow(x,cnt)));
cnt++;
num/=10;
}
return answer;
}
public int solution(int num , int x) {
String s = "";
while(num > 0) {
s=num%x+s;
// s+=num%x; <- ๋ค์ง๊ธฐ์ธ๊ฒฝ์ฐ
num/=x;
}
return Integer.parseInt(s);
}
}
public class BinaryNumber_A_to_B_to_C {
public static void main(String[] args) {
int num = 45;
int x = 3; //์ง์ ๋ณ์
SolutionB test = new SolutionB();
System.out.printf("10์ง์ : %-5d -> %-2d์ง์ : %d\n\n",num,x,test.solution(num, x));
// 10์ง์๋ฅผ - > x ์ง์๋ก ๋ณํ
int binary_x = test.solution(num, x);
System.out.printf("%-2d์ง์ : %-5s -> 10์ง์ : %d\n\n",x,binary_x,test.solution2(binary_x, x));
System.out.println(test.solution2(binary_x, x));
// x ์ง์๋ฅผ -> 10 ์ง์๋ก ๋ณํ
}
}
'Algorithm > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
2022 KAKAO ๋ธ๋ผ์ธ๋ ์ฝ๋ฉํ ์คํธ - ์ ๊ณ ๊ฒฐ๊ณผ ๋ฐ๊ธฐ (0) | 2022.04.01 |
---|---|
[Java] ํ๋ก๊ทธ๋๋จธ์ค - x๋งํผ ๊ฐ๊ฒฉ์ด ์๋ n๊ฐ์ ์ซ์ (0) | 2022.03.20 |
[Java] ํ๋ก๊ทธ๋๋จธ์ค - ์ฝ์์ ๊ฐ์์ ๋ง์ (0) | 2022.03.18 |
[JAVA] 1 ๋ถํฐ 100๊น์ง ์ซ์๋ฅผ ํฉํ๋ ์๊ณ ๋ฆฌ์ฆ (0) | 2022.02.26 |
[JAVA] ํ๋ก๊ทธ๋๋จธ์ค - ์์ ์๋ผํ ์คํ ๋ค์ค์ ์ฒด (0) | 2022.02.23 |