Coding History

프로그래머스 문제풀이

BlackBirdIT 2024. 7. 31. 09:15
//정수가 담긴 배열 array와 정수 n이 매개변수로 주어질 때, array에 n이 몇 개 있는 지를 return 하도록 solution 함수를 완성해보세요.

class Solution {
    public int solution(int[] array, int n) {
        int count = 0;

        for (int j : array) {
            if (j == n) {
                count++;
            }
        }
        return count;
    }
}

금방 풀었당

다음 문제도 비슷하다.
if문만 약간 바꾸면 된다.

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

class Solution {
    public int solution(int[] array, int height) {
        int count = 0;

        for (int i = 0; i < array.length; i++) {
            if (array[i] > height) {
                count++;
            }
        }

        return count;
    }
}

다음 문제.

//대문자와 소문자가 섞여있는 문자열 s가 주어집니다. s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 
// 다르면 False를 return 하는 solution를 완성하세요. 'p', 'y' 모두 하나도 없는 경우는 항상 True를 리턴합니다.
// 단, 개수를 비교할 때 대문자와 소문자는 구별하지 않습니다.

class Solution {
    boolean solution(String s) {
        boolean answer = true;

        char[] chars = s.toCharArray();

        int pCount = 0;
        int yCount = 0;

        for (int i = 0; i < chars.length; i++) {
            char c = chars[i];
            if (c == 'p') {
                pCount++;
            }
            if (c == 'y') {
                yCount++;
            }
            if (c == 'P') {
                pCount++;
            }
            if (c == 'Y') {
                yCount++;
            }
        }
        if (pCount != yCount) {
            answer = false;
        }
        return answer;
    }
}

입력 받은 문장을 char 형태로 배열에 넣어서 해결했다.

다음 문제

//함수 solution은 정수 x와 자연수 n을 입력 받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 
//리스트를 리턴해야 합니다. 다음 제한 조건을 보고, 조건을 만족하는 함수, solution을 완성해주세요.
class Solution {
    public int[] solution(int x, int n) {
        int[] answer = new int[n];

        for (int i = 0; i < n; i++) {
            answer[i] = x * (i + 1);
        }

        return answer;
    }
}

이렇게 제출 했는데 안되서

며칠 예외상황이 뭔지 고민 계속 하다가 답답해서 문제 초기화를 하니까 타입이 롱이였다. 멍청한 실수..

class Solution {
    public long[] solution(int x, int n) {
        if (n == 0) {
            return new long[0];
        }

        long[] answer = new long[n];

        for (int i = 0; i < n; i++) {
            answer[i] =(long) x * (i + 1);
        }

        return answer;
    }
}

이렇게 통과.

다음.

//문자열 s를 숫자로 변환한 결과를 반환하는 함수, solution을 완성하세요.

class Solution {
    public int solution(String s) {
        s = s.toLowerCase();
        char[] numbers = s.toCharArray();
        int num = 0;
        char prev = numbers[0];
        for (int i = 0; i < numbers.length; i++){
            prev += numbers[i];
            num = prev;
        }
        return num;
    }
}

이게 테스트 케이스에서 답은 같은데 틀리다고 나오는 이유가 뭔지 모르겠다. 형변환을 시켜봐도 이미 int 값인데 저쪽으로 갈 때 String으로 들어가나? 테스트 케이스 잘 까보니까 스트링으로 값을 받고 있는게 맞는 것 같은데

class Solution {
    public int solution(String s) {
//        s = s.toLowerCase();
//        char[] numbers = s.toCharArray();
//
//        int num = 0;
//
//        char prev = numbers[0];
//
//        for (char number : numbers) {
//            prev += number;
//        }
//        num = prev;
        int num = Integer.getInteger(s);
        return num;
    }
}

생각해보니까 굳이 저렇게 길게 쓰지말고 인티저 써서 해봐도 결과는 똑같다.

아 내가 코드를 잘못 썼다.

class Solution {
    public int solution(String s) {

        int num = Integer.parseInt(s);
        return num;
    }
}

이게 int 형변환 코드인데 다른걸 썼으니 당연히 안되지. 이게 정답.