티스토리 뷰

#  배열 자르기

 

문제 설명
정수 배열 numbers와 정수 num1, num2가 매개변수로 주어질 때, numbers의 num1번 째 인덱스부터 num2번째 인덱스까지 자른 정수 배열을 return 하도록 solution 함수를 완성해보세요.


제한사항
2 ≤ numbers의 길이 ≤ 30
0 ≤ numbers의 원소 ≤ 1,000
0 ≤num1 < num2 < numbers의 길이



입출력 예 설명

입출력 예 #1
[1, 2, 3, 4, 5]의 1번째 인덱스 2부터 3번째 인덱스 4 까지 자른 [2, 3, 4]를 return 합니다.
입출력 예 #2
[1, 3, 5]의 1번째 인덱스 3부터 2번째 인덱스 5까지 자른 [3, 5]를 return 합니다.

 
 
 
 
나의 답변

class Solution {
    public int[] solution(int[] numbers, int num1, int num2) {
        int[] answer = new int[num2-num1+1];
        int idx = 0;
        for(int i=num1; i<=num2; i++){
            answer[idx++] = numbers[i];
        }
        return answer;
    }
}




 
 
 
 
 
 
 
 
 
 

#  외계행성의 나이

 

문제 설명
우주여행을 하던 머쓱이는 엔진 고장으로 PROGRAMMERS-962 행성에 불시착하게 됐습니다. 입국심사에서 나이를 말해야 하는데, PROGRAMMERS-962 행성에서는 나이를 알파벳으로 말하고 있습니다. a는 0, b는 1, c는 2, ..., j는 9입니다. 예를 들어 23살은 cd, 51살은 fb로 표현합니다. 나이 age가 매개변수로 주어질 때 PROGRAMMER-962식 나이를 return하도록 solution 함수를 완성해주세요.


제한사항
age는 자연수입니다.
age ≤ 1,000
PROGRAMMERS-962 행성은 알파벳 소문자만 사용합니다.



입출력 예 설명

입출력 예 #1
age가 23이므로 "cd"를 return합니다.
입출력 예 #2
age가 51이므로 "fb"를 return합니다.
입출력 예 #3
age가 100이므로 "baa"를 return합니다.

 
abcde..가 담긴 배열을 만들어서 작성해야하나 싶었지만 다른 방법이 있을 것 같다
 
 
 
 
 
나의 답변

class Solution {
    public String solution(int age) {
        String answer = "";
        String[] a = new String[]{"a","b","c","d","e","f","g","h","i","j"};
        
        while(age>0){
            answer = a[age%10] + answer;
            age /= 10;
        }
        return answer;
    }
}

 
주의할 점
answer = a[age%10] + answer; 과 answer += a[age%10]; 의 차이를 알아야 한다.
문자열 결합하는 순서에 차이가 있다.
answer = a[age%10] + answer; 는 a[age%10] 를 앞에 두고 answer 를 더하기 때문에 새로운 문자가 기존 문자열의 앞에 추가된다.
 
 answer += a[age%10]; 는 answer을 앞에 두고 a[age%10]  를 더하기 때문에 새로운 문자가 기존 문자열의 뒤에 추가된다.
 
 
 
다른 풀이

class Solution {
    public String solution(int age) {
        // 결과를 저장할 StringBuilder 객체를 생성합니다.
        StringBuilder answer = new StringBuilder();
        
        // 주어진 age를 문자열로 변환합니다.
        String ageStr = String.valueOf(age);
        
        // 문자열로 변환된 age의 각 문자에 대해 반복합니다.
        for (char digit : ageStr.toCharArray()) {
            // 각 문자를 숫자로 변환한 후, 해당하는 알파벳으로 변환합니다.
            // 'a'의 ASCII 값은 97입니다. '0'의 ASCII 값은 48입니다.
            // 따라서 (digit - '0' + 'a')는 해당 숫자를 알파벳으로 변환합니다.
            answer.append((char) (digit - '0' + 'a'));
        }
        
        // StringBuilder 객체를 문자열로 변환하여 반환합니다.
        return answer.toString();
    }
    
   
}

 
이때 StringBuilder를 사용하는 이유는 효율성을 위해서 이다.
String을 사용하면 매번 객체가 생성되기 때문에 메모리상 좋지 않다.
 
 
 

코드 설명

  1. StringBuilder 객체 생성:
    • 변환된 결과 문자열을 효율적으로 저장하기 위해 StringBuilder 객체를 생성합니다.
  2. 나이 문자열로 변환:
    • age를 문자열로 변환합니다. 이를 통해 각 자리의 숫자를 개별적으로 접근할 수 있습니다.
  3. 반복문을 통해 각 자리 숫자 변환:
    • 문자열로 변환된 age의 각 자리 숫자(digit)에 대해 반복합니다.
    • digit - '0'을 통해 문자를 숫자로 변환하고, + 'a'를 통해 해당 숫자를 대응하는 알파벳으로 변환합니다.
    • 변환된 알파벳을 StringBuilder 객체에 추가합니다.
  4. 결과 반환:
    • StringBuilder 객체를 문자열로 변환하여 반환합니다.

이 코드는 주어진 나이를 PROGRAMMERS-962 행성의 표기법으로 변환하여 정확히 반환합니다.
 
 
 
 
 
 
 
 
 

#  순서 쌍의 개수

 

문제 설명
순서쌍이란 두 개의 숫자를 순서를 정하여 짝지어 나타낸 쌍으로 (a, b)로 표기합니다. 자연수 n이 매개변수로 주어질 때 두 숫자의 곱이 n인 자연수 순서쌍의 개수를 return하도록 solution 함수를 완성해주세요.


제한사항
1 ≤ n ≤ 1,000,000



입출력 예 설명

입출력 예 #1
n이 20 이므로 곱이 20인 순서쌍은 (1, 20), (2, 10), (4, 5), (5, 4), (10, 2), (20, 1) 이므로 6을 return합니다.
입출력 예 #2
n이 100 이므로 곱이 100인 순서쌍은 (1, 100), (2, 50), (4, 25), (5, 20), (10, 10), (20, 5), (25, 4), (50, 2), (100, 1) 이므로 9를 return합니다.

 
 
 
 
나의 답변

class Solution {
    public int solution(int n) {
        int answer = 0;
        for(int i = 1; i<=n; i++){
            if(n%i == 0){
                answer++;
            }
        }
        return answer;
    }
}

 
 
 
 
 
 
 
 



 

#  머쓱이 보다 키 큰 사람

 

문제 설명
머쓱이는 학교에서 키 순으로 줄을 설 때 몇 번째로 서야 하는지 궁금해졌습니다. 머쓱이네 반 친구들의 키가 담긴 정수 배열 array와 머쓱이의 키 height가 매개변수로 주어질 때, 머쓱이보다 키 큰 사람 수를 return 하도록 solution 함수를 완성해보세요.



제한사항
1 ≤ array의 길이 ≤ 100
1 ≤ height ≤ 200
1 ≤ array의 원소 ≤ 200



입출력 예 설명

입출력 예 #1
149, 180, 192, 170 중 머쓱이보다 키가 큰 사람은 180, 192, 170으로 세 명입니다.
입출력 예 #2
180, 120, 140 중 190보다 큰 수는 없으므로 0명입니다.

 
 
 
 
나의 답변

class Solution {
    public int solution(int[] array, int height) {
        int answer = 0;
        for(int i=0; i<array.length; i++){
            if(array[i]>height){
                answer++;
            }
        }
        return answer;
    }
}

 
 
 
 
 
 
 
 



 
 
 

#  자릿 수 더하기

 

문제 설명
정수 n이 매개변수로 주어질 때 n의 각 자리 숫자의 합을 return하도록 solution 함수를 완성해주세요


제한사항
0 ≤ n ≤ 1,000,000



입출력 예 설명

입출력 예 #1
1 + 2 + 3 + 4 = 10을 return합니다.
입출력 예 #2
9 + 3 + 0 + 2 + 1 + 1 = 16을 return합니다.

 
 
 
 
나의 답변

class Solution {
    public int solution(int n) {
        int answer = 0;
        while(n>0){
            answer += n%10;
            n = n/10;
        }
        return answer;
    }
}

 

'코딩 > 프로그래머스' 카테고리의 다른 글

코딩테스트 입문 #85 ~ #90  (0) 2024.06.26
[SQL - SELECT] 3  (0) 2024.06.20
코딩 기초 트레이닝 #76 ~ #80  (1) 2024.06.17
[SQL - SELECT] 2  (1) 2024.06.14
코딩테스트 입문 #71 ~ #76  (0) 2024.06.13
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday