자바를 공부할 때 생각하곤 합니다.
"컴퓨터야 한국말도 알아들어주라!"
현실은 인간과 컴퓨터가 소통할 수 있는 언어를 공부합니다.
이진법으로 대화하는 게 아니니 다행일까요.
그렇게 오늘도 다양한 경우의 수와 방안을 고민해 봅니다.
오늘의 주제입니다.
입력된 정수값이 n일 때
이 n이 홀수인지 짝수인지 구별하려면 어떻게 할까요?
정수 n의 홀/짝 여부 판단하기
방법은 간단합니다.
n을 2로 나누었을 때 나머지가 1이면 홀수, 0이면 짝수입니다.
어릴 적 씽크빅하던 시절,
맨 앞장에는 흥미로운 주제로 숫자에 대한 내용을 다루고 있었습니다.
그중 기억에 남는 주제가 '0은 홀수일까? 짝수일까?' 였어요.
장황하게 쓰여있는 증명을 전부 이해하진 못했지만,
굳이 따지자면 이진법을 기반으로 0은 짝수로 봐야 된다는 결론이었습니다.
이때는 굳이 이진법으로 증명해야 되는 건지 이해하지 못했습니다.
하지만 개발자인 지금은 이해가 되네요.
0으로 인해 짝수를 증명하니까요.
n이 홀수이면 이쪽, 짝수이면 저쪽으로 길을 안내하겠습니다.
int n = 820;
if (n%2 == 1) {
System.out.println("홀수입니다.");
} else { //(n%2 == 0)
System.out.println("짝수입니다."); //짝수입니다.
}
int n이 있습니다.
이 n을 2로 나누었을 때, (n%2)
나머지가 1이면 홀수입니다.
위 코드의 답은 "짝수입니다"가 되겠습니다.
그렇다면,
홀수는 홀수끼리, 짝수는 짝수끼리 더하는 방법도 고민할 수 있습니다.
홀/짝의 합 구하기
주어진 정수 n이 홀수라면 n이하의 홀수의 합을,
n이 짝수라면 n이하의 짝수의 합을 구하도록 하겠습니다.
해당 포스팅은 프로그래머스 '홀짝에 따라 다른 값 반환하기'를 풀기 위한 빌드업이었습니다.
https://school.programmers.co.kr/learn/courses/30/lessons/181935
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
코딩테스트 연습 > 코딩 기초 트레이닝(LV.0) > 홀짝에 따라 다른 값 반환하기
class Solution {
public int solution(int n) {
int answer = 0;
if (n%2==1) {
for(int i=1; i<=n; i+=2) {
answer += i;
}
} else {
for(int i=0; i<=n; i+=2) {
answer += i*i;
}
}
return answer;
}
}
if문을 보시면 위에서 이해한 것처럼 n%2==1로 홀/짝을 구분하고 있습니다.
그렇기 때문에 첫 번째 for문의 n은 홀수입니다.
이 안에서 홀수만 더해주면 됩니다.
for문 속 i를 홀수인 1부터 시작하고, 홀수인 n과 같거나 작을 때까지만 돌려줍니다.
그리고 i가 2씩 커지도록 하여 홀수만 해당되도록 합니다. 1,3,5,7,9...
첫 번째 for문 속 answer은 홀수 i만 더해지겠군요.
두 번째 for문은 마찬가지로 짝수 n만 더할 수 있도록 작성합니다.
i를 0으로 시작하고, 짝수 n과 같거나 작을 때까지만 돌려줍니다.
그리고 2씩 더해주어 짝수만 해당됩니다. 0,2,4,6,8...
두 번째 for문 속 answer은 짝수 i만 더해집니다.
'Language > JAVA' 카테고리의 다른 글
[JAVA] 프로그래머스 LV.0 더크게 합치기 풀이 - 형변환 이렇게 하세요 (0) | 2023.08.10 |
---|---|
[JAVA] join() 메소드로 배열 속 문자들 합치기 (0) | 2023.08.09 |
[JAVA] charAt 메소드로 문자열에서 문자 하나 출력하기 (0) | 2023.08.08 |
[JAVA] trim() 메서드로 공백 제거하기 (0) | 2023.08.07 |
[JAVA] 반복문(for)없이 반복메서드(repeat)로 반복하기 (0) | 2023.08.05 |