항해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
'알고리즘 문제풀이' 카테고리의 다른 글
[알고리즘] 없는 숫자 더하기 - 어렵다 (0) | 2022.05.14 |
---|---|
[알고리즘] 문자열을 정수로 바꾸기 (0) | 2022.05.14 |
[알고리즘] 두 정수 사이의 합 (0) | 2022.05.14 |
[알고리즘] 가운데 글자 가져오기 (0) | 2022.05.13 |
[알고리즘] 직사각형 별찍기 (0) | 2022.05.13 |