char형의 문자와 0 비교하기
char형의 값이 0인지 확인하는 것을 알아보고자 한다. 이는 단순히 생각하는 것처럼 '비교할 문자' != 0 과 같이 할 수 없는 것이 우리가 생각하는 '0'은 정수형의 값이고 비교할 문자는 char형이기 때문이다.
알고리즘 문제 풀이를 하다가 이 문제를 마주쳤다.
프로그래머스의 369 문제를 푸는데 char의 값이 0이 아니면서 + 3으로 나눈 나머지가 0이면 => 3,6,9에 해당한다 의 로직으로 코드를 짰는데 원하는대로 실행이 되지 않았다.
초기코드
int num = 2346809;
int answer = 0;
String str = Integer.toString(num);
for (int i=0;i<str.length();i++) {
if((str.charAt(i)!=0) && (str.charAt(i) % 3 == 0)){
System.out.println("str.charAt(i) = " + str.charAt(i));
answer++;
}
}
System.out.println(answer); //확인용
if문이 문제였다. 분명 if((str.charAt(i)!=0) 의 조건을 넣었는데 왜 아래처럼 0도 출력이 되는걸까..?

한 글자만 수정하면 되는 문제였다. char형이기 때문에 str.charAt(i)!=0 이렇게 비교를 하는 것은 해당 문자가 0인지가 아닌 ASCII 값이 0인지를 확인하는 것이었다. '0' 문자의 아스키 값은 48이다. 즉 str.charAt(i)!=48 또는 str.charAt(i)!='0'과 같이 비교를 해야한다.
수정코드
int num = 2346809;
int answer = 0;
String str = Integer.toString(num);
for (int i=0;i<str.length();i++) {
if((str.charAt(i)!='0') && (str.charAt(i) % 3 == 0)){ // 수정
System.out.println("str.charAt(i) = " + str.charAt(i));
answer++;
}
}
System.out.println(answer);
원하는 3,6,9의 값만 출력이 되는 것을 확인할 수 있다.

출처: https://school.programmers.co.kr/learn/courses/30/lessons/120891
'웹 개발 > java' 카테고리의 다른 글
[java] Map 특징 + 사용법 (0) | 2024.02.16 |
---|---|
Java #4 상수란? (2) | 2023.11.26 |
Java #4 변수 (0) | 2023.06.01 |
Java #3 자바 개발순서 (+기초 코딩 용어) (0) | 2023.03.07 |
Java #2 자바 개발환경 구축하기 (0) | 2023.03.07 |