안녕하세요!
아스키코드에 확실하게 집어 넘어갈 수 있는 코딩테스트를 가지고 왔습니다.
일단, 문제를 겪은 코딩테스트입니다.
제가 생각하는 대로 코드를 작성해 보았습니다.
시도1
설명
1. if문으로 문자열 길이가 4이거나 6일때만 for문을 시행해주도록 합니다.
2. chaArr배열의 값을 꺼내 비교해서 0과 9사이에 값이 맞으면 'true'를 반환해주도록 했습니다.
(→ 추후 이 부분이 문제였습니다,,,!
why?? 그냥 0은 int형 0과 똑같고, char형 '1'은 int형 49입니다. 그래서 위에 코드는 잘못된 것입니다.)
시도1의 문제점
1. 문자열 길이를 걸러주는 if문이 너무 장황함
→ 해결 : != 논리연산자를 사용하여 if문을 간단하게 바꿔주었습니다.
2. 아스키코드 개념을 인지하지 못하고 있었음
→ 해결 : 아스키코드 개념에 대해 다시 고 넘어간후, 코드를 다시 작성하였습니다.
(밑에 아스키코드에 대해 추가적인 설명을 붙여놓았습니다.)
시도2
설명
1. 3번째 선언하였던 answer를 지우고, return으로 간단하게 해줬습니다.
2. 문자열의 길이가 4 와 6이 아니면 바로 'fasle'를 return 해줍니다.
3. for문안에 if문으로 문자열이 숫자로만 구성되어있는지 판단해줍니다.
→ '0' = int 48 이고, '9' = int 57 입니다.
그런데 이번에는 테스트는 통과됐는데, 제출하니깐 중간중간 실패가 뜨더군요,,
시도2의 문제점
1. for문안에서 바로 retrun해버리니깐 문자열 중간에 문자가 껴있는 경우에도 true가 나와버리게 된다.
→ 해결 : if문을 &&가 아닌 || 연산자로 바꾼다 ( chaArr[i] < '0' || charArr[i] > '9' )
시도3
설명
1. || 논리 연산자로 바꾸면서 if문으로 false 값을 걸러줬기 때문에 어차피 나머지는 true가 나옵니다. 그래서 else문을 아예 지웠습니다.
→ 제한사항 보면 문자열은 영문 알파벳 대소문자 또는 0부터 9까지 숫자로 이루어져 있습니다. 이렇게 적혀있습니다.
아스키코드
예시)
- char의 문자가 '0' 인경우 int형 48이고, 그냥 0으로 적어놓으면 int형 0입니다.
오늘의 요약
아스키코드의 char형에 대해 알아두자.
'TIL(Today I Learned)' 카테고리의 다른 글
[MYSQL] 시간 차이 구하는 방법 3가지 (0) | 2024.09.05 |
---|---|
[git/github] 중요한 정보가 담긴 내용까지 git push 안 하고 싶을 때 (1) | 2024.09.04 |
[Java/코딩테스트] 부족한 금액 계산하기 (0) | 2024.08.22 |
[Java/코딩테스트] 문자열 내림차순으로 배치하기 (0) | 2024.08.21 |
[Java/코딩테스트] 약수의 개수와 덧셈 (0) | 2024.08.20 |