Algorithms

[프로그래머스] 언어기초 트랙 문제 - 1일차

chillmyh 2023. 11. 21. 20:48


# 1

문제설명

정수 num1과 num2가 주어질 때, num1과 num2의 합을 return하도록 soltuion 함수를 완성해주세요.

 

답안 -> 정답

class Solution {
    public int solution(int num1, int num2) {
        int answer = num1 + num2;
        return answer;
    }
}

 

#2

문제 설명

정수 num1과 num2가 주어질 때, num1에서 num2를 뺀 값을 return하도록 soltuion 함수를 완성해주세요.

 

답안 -> 정답

class Solution {
    public int solution(int num1, int num2) {
        int answer = num1 - num2;
        return answer;
    }
}

 

#3

문제 설명

정수 num1, num2가 매개변수 주어집니다. num1과 num2를 곱한 값을 return 하도록 solution 함수를 완성해주세요.

 

답안 -> 정답

class Solution {
    public int solution(int num1, int num2) {
        int answer = num1 * num2;
        return answer;
    }
}

 

#4

문제 설명

정수 num1num2가 매개변수로 주어질 때, num1을 num2로 나눈 몫을 return 하도록 solution 함수를 완성해주세요.

 

답안 -> 정답

class Solution {
    public int solution(int num1, int num2) {
        int answer = num1 / num2;
        return answer;
    }
}

 

#5

문제설명

정수 num1num2가 매개변수로 주어질 때, num1를 num2로 나눈 나머지를 return 하도록 solution 함수를 완성해주세요.

 

답안 -> 정답

class Solution {
    public int solution(int num1, int num2) {
        int answer = num1 % num2;
        return answer;
    }
}

 

#6 나이출력

문제 설명

머쓱이는 40살인 선생님이 몇 년도에 태어났는지 궁금해졌습니다. 나이 age가 주어질 때, 2022년을 기준 출생 연도를 return 하는 solution 함수를 완성해주세요.

 

답안 -> 정답

class Solution {
    public int solution(int age) {
        int answer = 2022 - age + 1;
        return answer;
    }
}

 

#7 숫자비교하기

문제 설명

정수 num1과 num2가 매개변수로 주어집니다. 두 수가 같으면 1 다르면 -1을 retrun하도록 solution 함수를 완성해주세요.

 

답안 -> 오답

class Solution {
    public int solution(int num1, int num2) {
        if (num1 == num2) {
            return answer = 1;
        } else if (num1 != num2) {
            return answer = -1;
        }
    }
}

 

수정답안 -> 정답

class Solution {
    public int solution(int num1, int num2) {
        int answer = 0;
        if (num1 == num2) {
            return answer = 1;
        } else {
            return answer = -1;
        }
    }
}

틀렸던 이유 :

answer라는 변수를 사전에 설정해주지 않았음.

또한 수정 중 굳이 else if 를 사용하지 않고 else만 사용해도 됨을 알았음.

 

 

#8 각도기

문제 설명

각에서 0도 초과 90도 미만은 예각, 90도는 직각, 90도 초과 180도 미만은 둔각 180도는 평각으로 분류합니다. 각 angle이 매개변수로 주어질 때 예각일 때 1, 직각일 때 2, 둔각일 때 3, 평각일 때 4를 return하도록 solution 함수를 완성해주세요.

 

답안 -> 오답

class Solution {
    public int solution(int angle) {
        int answer = 0;
        if (angle < 90) {
            return answer = 1;
        } else if (angle == 90) {
            return answer = 2;
        } else if (angle < 180) {
            return answer = 3;
        } else if (angle == 180) {
            return answer = 4;
        }
    }
}

 

수정답안 -> 오답

class Solution {
    public int solution(int angle) {
        int answer = 0;
        if (0 < angle && angle < 90) {
            return answer = 1;
        } else if (angle == 90) {
            return answer = 2;
        } else if (90 < angle && angle < 180) {
            return answer = 3;
        } else if (angle == 180) {
            return answer = 4;
        }
    }
}

 

최종수정답안 -> 정답

class Solution {
    public int solution(int angle) {
        int answer = 0;
        if (0 < angle && angle < 90) {
            answer = 1;
        } else if (angle == 90) {
            answer = 2;
        } else if (90 < angle && angle < 180) {
            answer = 3;
        } else if (angle == 180) {
            answer = 4;
        }
        return answer;
    }
}

 

틀린 이유 :

1. 한번에 부등호를 여러개 쓰는게 아닌 &&으로 묶어줘야되는 것을 간과했다.

2. if 구문에서 각각 answer = ; 로 변수를 할당하고 if 구문이 종료되고나서 return answer; 로 확인해야한다.

 

 

#9 짝수의 합

문제 설명

정수 n이 주어질 때, n이하의 짝수를 모두 더한 값을 return 하도록 solution 함수를 작성해주세요.

 

풀이 - > 정답

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

 

모범답안

class Solution {
    public int solution(int n) {
        int answer = 0;

        for(int i=2; i<=n; i+=2){
            answer+=i;
        }

        return answer;
    }
}

 

++1 은 1씩 더하는거지만 증감 자리에 +=는 2씩 더한다는 뜻임.

 

for ( int i = 2; i<=n; i+=2){         // int i = 2 부터; i<=n i가 n보다 작거나 같을때동안; i에 2씩 더한다

       answer+=i;                         // answer에 i씩 더한다. answer = i + answer

}