• 분류 전체보기 (512)
    • 개발남노씨(Coding Test) (6)
    • 고농축 백엔드 (17)
    • 재귀함수 DFS 총정리 (1)
    • 프론트엔드 날개달기:Vuejs.React (1)
    • 훈훈한 javascript (5)
    • 렛츠기릿 자바스크립트 (18)
    • 나도코딩 (1)
      • 웹 스크래핑 (1)
    • 프로그래머스(자바스크립트) (41)
      • LV.0(자바스크립트) (41)
    • 프로그래머스(자바) (121)
      • LV.0(자바) (56)
      • LV.1(자바) (41)
      • LV.2(자바) (23)
    • 프로그래머스(파이썬) (127)
      • LV.0(파이썬) (46)
      • LV.1(파이썬) (51)
      • LV.2(파이썬) (30)
    • 임시저장소 (31)
    • 프로젝트 (0)
    • 자바 알고리즘 (13)
      • 알고리즘 직빵 자바 문법 (10)
      • String(문자열) (3)
    • 파이썬 알고리즘 (93)
      • 알고리즘 직빵 파이썬 문법 (20)
      • 알고리즘 백준 (2)
      • 파이썬 알고리즘(사고력기르기) (6)
      • 파이썬 탐색 & 시물레이션 (8)
      • 이분탐색 & 그리디 알고리즘 (10)
      • 스택, 큐, 해쉬, 힙 (10)
      • 완전탐색과 DFS기초 (12)
      • DFS, BFS 활용 (19)
      • 동적계획법 (6)
    • 자바 (27)
      • Java TPC(생각하고, 표현하고, 코딩하고) (17)
      • Java (중요하고, 이해 안 되고, 어려운) (10)
    • 스프링 (5)
      • 스프링 MVC 패턴 2편 (5)
hELLO · Designed By 정상우.
@@#@@

기록용 블로그

프로그래머스(자바)/LV.1(자바)

숫자 짝궁→char타입 - int타입, 내림차순 정렬시 0이 맨 앞에 오는 경우→ 모든 요소를 '0'으로 되어 있다 .

2022. 12. 20. 17:56
class Solution {
    public String solution(String X, String Y) {
        StringBuilder answer = new StringBuilder();
        int[] x = {0,0,0,0,0,0,0,0,0,0};
        int[] y = {0,0,0,0,0,0,0,0,0,0};
        for(int i=0; i<X.length();i++){
           x[X.charAt(i)-48] += 1;
        }
        for(int i=0; i<Y.length();i++){
           y[Y.charAt(i)-48] += 1;
        }

        for(int i=9; i >= 0; i--){
            for(int j=0; j<Math.min(x[i],y[i]); j++){
                answer.append(i);
            }
        }
        if("".equals(answer.toString())){
           return "-1";
        }else if(answer.toString().charAt(0)==48){
           return "0";
        }else {
            return answer.toString();
        }
    }
}

▶ char형끼리 뺄셈을 하거나 char형과 int형을 뺄셈하는 경우 char형이 아스키코드로 바뀌어서 정수연산이 수행된다. 

 

▶ X.charAt() 메서드의 리턴타입은 char형이며 48은 int형이기 때문에

    char형이 아스키코드로 바뀌면서 정수연산이 수행된다.

 

▶ 48은 아스키 코드인 '0'(문자0)에 해당하며, 48을 뺄셈해주는 역할을 char형의 숫자를 int형 숫자로 전환시켜준다.

 

▶ X.charAt()-48 은 char형 - int형 연산이며,

 

▶ X.charAt()-'0' 은 char형 - char형 연산이다. 

 

▶ X.chartAt() 와  '0'(숫자문자) 모두 아스키코드에 해당하는 정수로 치환되므로 

 

▶ 위의 두 식은 차이가 없다. 

 

▶ answer문자열을 코드상으로 숫자문자열을 내림차순으로 정렬하는데, 

 

▶ 내림차순으로 정렬하였는데,

 

▶ answer.toString().charAt(0)==48

 

▶ 가장 앞에 인덱스0에 해당하는 값이 '0'(숫자문자 '0'=아스키코드 48)가 같다는 의미는 

 

▶ answer문자열의 모든요소가 '0'으로 되어있다는 의미한다. 

 

▶ 내림차순으로 하였는데, 숫자 문자 '0' 이 가장 앞에 왔다는 의미는 

 

▶ 모든 문자가 '0' 으로 되어있다는 의미한다. 

 

저작자표시 비영리 변경금지 (새창열림)

'프로그래머스(자바) > LV.1(자바)' 카테고리의 다른 글

폰켓몬→ boxed()★+ collectingAndThen()  (0) 2022.12.21
키패드 누르기★★  (0) 2022.12.20
과일장수→ 내림차순 정렬★★ + 우측에서 좌측으로 접근★★  (0) 2022.12.20
완주하지 못한 선수→ getOrDefault() 각 요소 갯수 세기★★  (0) 2022.12.19
다트 게임→ 마지막에서 값을 remove★ 하고 싶은 경우 + 마지막에서 두번 째에서 값을 remove★하고 싶은 경우+ map자료형  (0) 2022.12.19
    '프로그래머스(자바)/LV.1(자바)' 카테고리의 다른 글
    • 폰켓몬→ boxed()★+ collectingAndThen()
    • 키패드 누르기★★
    • 과일장수→ 내림차순 정렬★★ + 우측에서 좌측으로 접근★★
    • 완주하지 못한 선수→ getOrDefault() 각 요소 갯수 세기★★
    @@#@@
    @@#@@
    자바, 스프링, 알고리즘, 깃허브, 파이썬

    티스토리툴바