728x90

3의 배수나 3이 들어간 수를 쓰지 않을 때 10진수를 표현한 수는? 

public int solution(int n) {

int answer = 1;

int count = 1;

do{

if((answer+"").contains("3")||answer%3==0){

answer= answer+ 1;//하고 나서도 다시 체크

count--;

}else{

if(count==n)break;

answer = answer+1;

}

 

count++;

}while(count<=n);

return answer;

}

answer를 증가시키는데 3이나 3의 배수인 수는 count를 감소시켜 한번더 체크하여 answer를 증가시키도록 

 

public int solution2(int n) {

int answer = 0;

for(int i=0; i<n; i++) {

answer++;

if((answer+"").contains("3")||answer%3==0)i--;

}

return answer;

}

for문으로 간단하게 만드는 방법도 있다..

'Java > Coding Test' 카테고리의 다른 글

치킨 쿠폰 문제풀이  (0) 2023.09.17
유한소수 판별하기 문제풀이  (0) 2023.09.17
문자열 밀기 문제풀이  (0) 2023.09.17
다항식 더하기 문제풀이  (0) 2023.09.17
OX 퀴즈 문제풀이  (0) 2023.09.17
728x90

주어진 첫번째 문자열을 오른쪽으로 밀었을때 주어진 두번째과 동일하게 된다면 밀었던 횟수를 반환 그렇지 않으면 -1을 반환 

public int solution(String A, String B) {

int answer = 0;

int len = A.length();

A=A+A;

for (int i = 0; i < len; i++) {

String t =A.substring(len-i,2*len-i);

if(t.equals(B))return i;

}

return -1;

}

A문자열을 두번 이어붙여 이어지는 문자열 중 B와 일치하는 문자열이 있는지 확인

 

다른 사람풀이를 보았는데

public int solution2(String A, String B) {

return (B+B).indexOf(A);

}

그냥 B를 붙여서 A를 찾는다... indexOf()는 어차피 실패하면 -1을 반환해준다.

'Java > Coding Test' 카테고리의 다른 글

유한소수 판별하기 문제풀이  (0) 2023.09.17
저주의 숫자 3 문제풀이  (0) 2023.09.17
다항식 더하기 문제풀이  (0) 2023.09.17
OX 퀴즈 문제풀이  (0) 2023.09.17
연속된 수의 합 문제풀이  (0) 2023.09.17
728x90

다항식이 문자열로 주어질 때 연산을 반환 

연산자는 '+'만 존재하고 1차항과 상수항만 주어진다.

 

public String solution(String polynomial) {

String answer = "";

String[] a = polynomial.split(" ");

int x = 0;

int y = 0;

for (int i = 0; i < a.length; i+=2) {

if(a[i].contains("x")) {

x+=Integer.parseInt((a[i].substring(0,a[i].length()-1).equals(""))?"1":a[i].substring(0,a[i].length()-1));

}

else y+=Integer.parseInt(a[i]);

}

return x == 0 ? y==0 ? "0" : y+"" : x==1 ? y==0 ? "x" : "x + "+y : y==0 ? x+"x" : x+"x + "+y;

}

1차항과 상수항을 따로 구하고 

0x 또는 1x, 0 등이 나오지 않게 걸러준다.

'Java > Coding Test' 카테고리의 다른 글

저주의 숫자 3 문제풀이  (0) 2023.09.17
문자열 밀기 문제풀이  (0) 2023.09.17
OX 퀴즈 문제풀이  (0) 2023.09.17
연속된 수의 합 문제풀이  (0) 2023.09.17
안전지대 문제풀이  (0) 2023.09.17
728x90

X [+/-] Y = Z

연산식이 문자열로 주어질때 연산값이 맞다면 O 틀리면 X 를 반환한 문자열 배열을 반환

 

public String[] solution(String[] quiz) {

String[] answer = new String[quiz.length];

for (int i = 0; i < quiz.length; i++) {

String[] a =quiz[i].split(" ");

if(a[1].equals("+")) {

if(Integer.parseInt(a[0])+Integer.parseInt(a[2])==Integer.parseInt(a[4])) {

answer[i]="O";

}else answer[i]="X";

}else {

if(Integer.parseInt(a[0])-Integer.parseInt(a[2])==Integer.parseInt(a[4])) {

answer[i]="O";

}else answer[i]="X";

}

}

return answer;

}

숫자와 연산자 사이는 공백으로 비워져 있으므로 공백으로 숫자와 연산자를 구분 

 

연산자는 +또는 -밖에 없으므로

a[0]+a[2]*a[1] = a[4]로 하고 

a[1]가 +이면 1로, -이면 -1로 바꾸어주면 좀더 간결한 식을 만들 수 있다.

 

public String[] solution2(String[] quiz) {

String[] answer = new String[quiz.length];

for (int i = 0; i < quiz.length; i++) {

String[] a = quiz[i].split(" ");

answer[i]=(Integer.parseInt(a[0]) + Integer.parseInt(a[2])*((a[1].equals("+"))?1:-1) == Integer.parseInt(a[4]))? "O":"X";

}

return answer;

}

'Java > Coding Test' 카테고리의 다른 글

문자열 밀기 문제풀이  (0) 2023.09.17
다항식 더하기 문제풀이  (0) 2023.09.17
연속된 수의 합 문제풀이  (0) 2023.09.17
안전지대 문제풀이  (0) 2023.09.17
겹치는 선분의 길이 문제풀이  (0) 2023.09.17

+ Recent posts