프로그래머스 : 홀짝에 따라 다른 값 반환하기

Digeut·2024년 1월 27일
0

프로그래머스

목록 보기
127/164

❔문제설명

양의 정수 n이 매개변수로 주어질 때, n이 홀수라면 n 이하의 홀수인 모든 양의 정수의 합을 return 하고 n이 짝수라면 n 이하의 짝수인 모든 양의 정수의 제곱의 합을 return 하는 solution 함수를 작성해 주세요.

🤔아이디어

홀수와 짝수의 경우를 나눠서 List에 담은 다음 그 리스트를 반환하면 되는거 아닌가?

❌틀린코드

import java.util.*;

class Solution {
    public int solution(int n) {
        int answer = 0;
        List<Integer> numEven = new ArrayList<>();
        List<Integer> numOdd = new ArrayList<>(); 
        
        for(int i = 1 ; i <= n ; i++){
            if(n % 2 == 0){
                numEven.add(i*i);
            } else {
                numOdd.add(i);
            }
        }
        
        if(n % 2 == 0){
            answer = Integer.parseInt(numEven.toString());
        } else {
            answer = Integer.parseInt(numOdd.toString());;
        }
        
        return answer;
    }
}

🙄오류


NumberFormatException이 나왔다. 이게 뭐지
List형을 String형으로 바꾼 다음에 Int로 바꾸려고 한건데 뭔가 내가 잘못한건가?

numEven.toString()이 부분이 지금 List형에서 String으로 변환이 안된거 같은데. 문자형 배열로 지금 받아지고 있다... "[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]" -> 심지어 홀짝에 따른 분류가 안되고있다!

List에 추가할때 그냥 다 집어 넣고 있었다..n의 짝홀수 구분은 다 해놓고 for문을 돌릴때는 i를 1부터 n까지 다 집어넣음..ㅎ

💡코드풀이

import java.util.*;

class Solution {
    public int solution(int n) {
        int answer = 0;
        List<Integer> nums = new ArrayList<>();
        
        if(n % 2 ==0){ //짝수니까 2부터 시작
            for(int i = 2 ; i <= n ; i += 2){
                nums.add(i*i);
            }
        } else { //홀수니까 1부터 시작
            for(int i = 1 ; i <= n ; i += 2){
                nums.add(i);
            }
        }
            
        for(int num : nums){
            answer += num;
        }
            
        return answer;
    }
}
profile
개발자가 될 거야!

0개의 댓글