알고리즘 문제풀이

[알고리즘] 짝수와 홀수

wonderson 2022. 5. 13. 15:34
반응형

항해99_알고리즘 주차 문제와 해결_2

[JAVA]

문제 참고 : https://programmers.co.kr/learn/courses/30/lessons/12937

2번 문제

[짝수와 홀수]

문제 설명

정수 num이 짝수일 경우 "Even"을 반환하고 홀수인 경우 "Odd"를 반환하는 함수, solution을 완성해주세요.

 

제한 조건

  • num은 int 범위의 정수입니다.
  • 0은 짝수입니다.

입출력 예

num                                           return

3 "Odd"
4 "Even"

내가 해 본 거

1. 먼저 문제 분석

- num이 0 이면 Even

           1 이면 Odd

           2 이면 Even

           3 이면 Odd

           4 이면 Even

 

- 그러면 홀수 짝수 구분 할 수 있게 해야겠다.

참고 : https://wakestand.tistory.com/585

---- %2로 나누 후 나머지 반환 [홀수는 무조건 1, 짝수는 무조건 0]

 

2. 규칙 찾기 & 정리

- 숫자 % 2 = 0  ㅡ> 짝수 Even

- 숫자 % 2 = 1  ㅡ> 홀수 Odd

 

- 만약에 (숫자 % 2 == 0)

          숫자랑 Even 출력

  아니라면 만약에 (숫자 % 2 == 1)

         숫자랑 Odd 출력

 

3. 코딩화

System.out.println("num   return");        띄어쓰기는 어떻게 하는지 몰라서 그냥 띄어쓰기 함
if(num %2 == 0){        //짝수 출력
    System.out.println(num+"   Even");
} else if (num %2 == 1){        //홀수 출력
    System.out.println(num+"   Odd");
}

 

※ 그런데 문제를 보면 Even, Odd를 반환하는 함수를 만들라고 되어있다. 함수는 어떻게 하지 ㅠㅠ

반환하는 거는 아직 못했고 매개변수는 있는데 리턴값이 없는 함수 호출 해보았다. 반환하는 함수 찾았다!

참고 : https://steemit.com/java/@pooh1973/zwqyb

 

----------------------

// 4) 매개변수도 있고 리턴값도 있는 함수

public static int addNum(int a, int b) { // 정수값 1개를 리턴값으로 돌려준다 ==> 호출시 정수 2개호출)

int result = a + b;

return result;

}

<public static String으로 함수를 만들어 주었다. 처음에 public static int로 적어서 값이 반환이 안되었는데 알고보니 반환하는 값이 문자열이라서 함수를 String으로 적어줬다.>

public class Main {
    public static String addNum(int num){ //매개변수 있고
        String result = "";  //문자열 변수 선언
        if(num %2 == 0){
            result = "Even";
        } else if (num %2 == 1){
            result = "Odd";
        }
        return result;  //반환하는 값 있고
    }

    public static void main(String[] args) {
        System.out.println(addNum(31));
    }
}
//결과 값
Odd

 

-------- 많은 함수 중에 이거로 만들어 보았다.

매개변수는 "입력" 리턴값은 "출력" 이라는 개념

// 2) 매개변수가 있고 리턴값은 없는 함수

public static void addOne(int a) { // 변수를 코드블록 안에서 가공처리 한다 반환(리턴)하지 않는다

a++;

System.out.println("받은값+1: " + a);

} // addOne()의 끝

 

-----------------------------------

public class Main {

// <evenOdd 함수 코드>
    public static void evenOdd(int num) {
        System.out.println("num   return");
        if(num %2 == 0){
            System.out.println(num+"   Even");
        } else if (num %2 == 1){
            System.out.println(num+"   Odd");
        }
    }
    
// <evenOdd 함수 호출>
    public static void main(String[] args) {
        // write your code here
        //  메소드는 클레스 안에만 들어올수 있다.
        // 함수(메소드): 자주 사용되는 명령 정의 필요시 함수이름 호출해서 사용!
        evenOdd(40);
    }
}

<결과>

num   return
40   Even

 

★ 이해는 안되지만 간결한 코드인 거 같은 문제풀이 들고옴 (삼항연산자)

public class Main {
    String evenOrOdd(int num) {  //메서드가 String 이면 result변수를 선언할 필요도 없다.
        // 삼항연산자를 이용
        return num % 2 == 0 ? "Even": "Odd";
    }

    public static void main(String[] args) {

        Main evenOrOdd = new EvenOrOdd();

        System.out.println("결과 : " + evenOrOdd.evenOrOdd(3));
        System.out.println("결과 : " + evenOrOdd.evenOrOdd(2));
    }

    private static class EvenOrOdd extends Main {
    	//뭔지 모르지만 내가 실행하려고 하니깐 이게 추가 되야 실행이 됨
    }
}

<실행 결과>

결과 : Odd
결과 : Even

반응형