728x90

 0을 a, ~ 9를 j로 표현할 때 주어진 정수를 알파벳형태로 반환

 

public String solution(int age) {

String answer = age+"";

char[] arr = answer.toCharArray();

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

arr[i] = (char) (arr[i]+49);

}

answer = String.valueOf(arr);

return answer;

}

아스키 코드표를 보면 

0은 48, a는 97로 49만큼 차이가 난다. 

> 굳이 아스키 코드를 볼 필요 없이  49대신  'a'-'0' 의 값을 더하면 된다.

주어진 정수의 각 자릿수에 49만큼 더한 후 문자열로 변환하면 된다. 

 

참고로 0= 48, ... 9=57, A=65, ... Z=90, a=97, ... z=122 이다.

728x90

주어진 문자열 중 숫자만 뽑아 오름차순 정렬한 숫자 리스트를 반환 

public int[] solution(String my_string) {

my_string = my_string.replaceAll("\\D", "");

char[] arr = my_string.toCharArray();

Arrays.sort(arr);

int[] answer = new int[arr.length];

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

answer[i] = Integer.parseInt(arr[i]+"");

}

return answer;

}

문자열 중 숫자가 아닌 모든 문자를 제거한다.

숫자만 남은 문자열을 char[]로 바꾸어 정렬한다. 

char[]로 반환해도 될 줄 알았는데 숫자 형식으로 바꾸어야 하는지 오답이 나왔다.

-> char+"" 로 String 형태로 바꾼 후 Integer.parseInt() 메서드로 숫자형태로 바꿔 주었다.

 

-> char의 '0'~'9'까지 문자에서 '0'의 값을 빼주면 int 0~9값이 나오므로 

int[] answer = new int[arr.length];

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

answer[i] = arr[i]-'0';

}

이렇게 바꿀수도 있다.

 

return Arrays.stream(myString.replaceAll("[A-Z|a-z]", "")

.split("")).

sorted().

mapToInt(Integer::parseInt).

toArray();

스트림과 정규표현식을 이용한 다른 사람의 풀이이다. 

 

replaceAll 메서드를 이용해 A~Z 또는 a~z 까지의 문자를 모두 "" null String으로 바꾸고 

.split("") 메서드로 모든 문자를 분할하고 정렬한후 Integer 배열로 바꾸었다.

 

자료구조, 알고리즘 정리한 후 스트림과 정규표현식도 정리해봐야겠다.

 

728x90

주어진 점의 좌표가 1,2,3,4분면중 어디에 속하는지 반환 

x,y의 좌표는 0과 같지 않다. 

 

public int solution(int[] dot) {

if(dot[0]>0&&dot[1]>0)return 1;

else if(dot[0]<0&&dot[1]>0)return 2;

else if(dot[0]<0&&dot[1]<0)return 3;

else return 4;

 

}

삼항연산자를 이용하여 표현할 수도 있다.

 return dot[0]>0&&dot[1]>0 ? 1: dot[0]<0&&dot[1]>0 ? 2 : dot[0]<0&&dot[1]<0 ? 3: 4;

 

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

외계행성의 나이 문제풀이  (0) 2023.09.10
문자열 정렬하기(1) 문제풀이  (0) 2023.09.10
삼각형의 완성조건  (0) 2023.09.09
순서쌍의 개수 문제풀이  (0) 2023.09.09
배열의 유사도 문제풀  (0) 2023.09.09
728x90

세 변의 길이가 배열로 주어질 때 주어진 배열로 삼각형을 만들 수 있는 경우 1, 아닌 경우 2를 반환 

 

삼각형을 만들 수 있는 조건

/ *가장 긴 변의 길이가 다른 두 변의 길이의 합보다 작아야 한다.*/

 

public int solution(int[] sides) {

Arrays.sort(sides);

if(sides[2]<sides[0]+sides[1])

return 1;

return 2;

}

 

삼항연산자를 사용하면 더 좋았을텐데 익숙하지가 않다... 

public int solution(int[] sides) {

Arrays.sort(sides);

int answer = (sides[2]<sides[0]+sides[1]) ? 1: 2;

return answer;

}

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

문자열 정렬하기(1) 문제풀이  (0) 2023.09.10
점의 위치 구하기 문제풀이  (1) 2023.09.09
순서쌍의 개수 문제풀이  (0) 2023.09.09
배열의 유사도 문제풀  (0) 2023.09.09
문자열 뒤집기 문제풀이  (1) 2023.09.09

+ Recent posts