TIL

2023-10-17 TIL(프로그래머스)

우성팔 2023. 10. 17.

a : 0, b: 1, c: 2 ,,, j: 9 로 나타내는 코드를 작성하기

class Solution {
    public String solution(int age) {
        List<Integer> arrayList = new ArrayList<>(); //제네릭 클래스 사용
        
        while (age > 0) {
            int number = age % 10;
            arrayList.add(0, number); // add()에 첫번째 매개변수 0을 넣어줌으로써 역순으로 저장
			// (ex. age = 51일 때 0을 기입하지 않으면 1,5순서로 저장되므로 원하는 값이 출력이 되지않음
            age /= 10;
        }
        StringBuilder answer = new StringBuilder(); // StringBuilder 클래스 
        
        for (Integer num : arrayList) { // 향상된 for문 사용
            answer.append((char) ('a' + num));
        }
 
        return answer.toString(); // toString을 안 붙여도 컴파일러가 자동으로 붙여줘서 같은 결과값 리턴

//        ArrayList arrayList = new ArrayList<>();
//        String answer = "";
//
//        while (age > 0) {
//            int number = age % 10;
//            arrayList.add(0, number);
//            age /= 10;
//
//        }

//        for (int i = 0; i < arrayList.size(); i++) {
//            answer += (char) ((int) 'a' + (int) arrayList.get(i));
//        }

//        return answer;
    }
}

(아래 주석 처리 한 부분이 내가 기존에 풀었던 방법) 

 

다른 분들 푼 것을 보니 강의에서 들은 것들을 많이 사용하여 푸는 것을 알 수 있었다

앞으로 풀이 할 땐 배운 것들을 활용해서 풀어봐야겠다

 

+ StringBuilder 클래스가 잘 활용하면 편할 것 같다는 생각이 든다

StringBuilder 클래스의 주요 메서드에는 append, insert, delete, replace, repeat, reverse 등이 포함된다

 


numbers num1부터 num2까지의 배열을 새로 만드는 문제

 

class Solution {
    public int[] solution(int[] numbers, int num1, int num2) {
        int[] answer = new int[num2 - num1 + 1]; // 정답 배열 초기화
        for (int i = num1; i <= num2; i++) {
            answer[i - num1] = numbers[i];
        }
        return answer;
    }
}

// return Arrays.copyOfRange(numbers, num1, num2 + 1); // Arrays.copyOfRange를 써서 한줄로 표현가능

Arrays.copyOfRange(배열,시작,끝) 을 사용하면 배열의 시작부터 끝에 해당하는 요소를 얻을 수 있다는 점을 알았다!

 

 


.toCharArray 사용

class Solution {
            public String solution(String my_string, String letter) {
                StringBuilder answer = new StringBuilder();

//                for (int i = 0; i < my_string.length(); i++) {
//                    char ch = my_string.charAt(i);
//                    if (ch != letter.charAt(0)) {
//                        answer.append(ch);
//                    }
//                }
//                return answer.toString();
                char[] arr = my_string.toCharArray(); // 문자열을 문자 배열로 변환
                for(char ch : arr){
                    if(ch!=letter.charAt(0)){
                        answer.append(ch);
                    }
                }
                return answer.toString();
            }
        }
        //  String answer = "";

        //   answer = my_string.replace(letter, ""); 이렇게도 가능

        //  return answer;

5~11줄 주석으로 처리한 부분이 내가 작성한 부분인데 .toCharArray() 메서드를 이용한 방법도 있었다

 

 

맨 밑 주석처럼 String에도 replace함수가 사용가능하다는 점을 알았다

(StringBuilder 클래스만 가능한 줄 알았다)

 


String.split(), String .repeat() 사용

class Solution {
    public String solution(String my_string, int n) {
        String answer = "";
        String[] str = my_string.split("");

        for(int i = 0 ; i < my_string.length() ; i ++){
            answer += str[i].repeat(n);

        }
//        for(int i = 0 ; i < my_string.length() ; i ++){
//            for(int j = 0; j < n ; j ++) {
//                answer += my_string.charAt(i);
//            }
//        }
        return answer;
    }
}

String에 split함수가 사용가능하고 배열에 repeat도 가능하다는 것을 알게 되었다

 

 

파이썬과 같이 풀다보니 비슷한 점도 꽤 있는 것 같았고 비슷해서 헷갈리는 부분도 있었다
아직 난이도가 낮아서 그런지 파이썬이 편하기만 하다
오늘 TIL강의를 듣고 처음 써보지만 조금씩이라도 자주 쓰려고 노력해야겠다

 

댓글