[2020-11-11] 문자열 다루기 기본
2020. 11. 11. 10:24ㆍ코딩테스트
푼 시간 : 40분
언어 : 자바
programmers.co.kr/learn/courses/30/lessons/12918
지문을 잘 읽어봐야 한다는 것을 강조하는 문제였다...
s가 4와 6이어야 한다는 조건을 보지 못하고 다 만들어놓고나서
엄청나게 헤맸다... 다음부터는 지문을 잘 읽어봐야겠다.
class Solution {
public boolean solution(String s) {
boolean answer = true;
int count=s.length();
int temp=0;
for(int i=0; i<count; i++){
if((s.charAt(i)>=65) && (s.charAt(i)<=90)){
// 대문자 A부터 Z까지
temp++;
break;
}
else if((s.charAt(i)>=97) && (s.charAt(i)<=122)){
// 소문자 a부터 z까지
temp++;
break;
}
}
if((count!=4 && count!=6)||temp>0)
// s의 길이 4, 6이 아닐경우, temp가 0보다 클 경우
answer=false;
return answer;
}
}
코드를 제출하고 보니 더 간소화시킬 방법이 있을 것 같아
고민하다가 다시 간소화 해봤다. 코드가 너무 거쳐가는게 많은 것 같다.
class Solution {
public boolean solution(String s) {
boolean answer = true;
int count=s.length();
for(int i=0; i<count; i++){
if(((s.charAt(i)>=65) && (s.charAt(i)<=90)) ||
// 대문자 A~Z
((s.charAt(i)>=97) && (s.charAt(i)<=122)) ||
// 소문자 a~z
count!=4 && count!=6){
// s의 길이
answer=false;
break;
}
}
return answer;
}
}
얼마 바뀐건 없지만 temp라는 변수로 메모리를 차지하지 않고,
if를 두번 쓸 필요가 없어졌다.
생각보다 조건 하나를 못 건드려서 어려웠던 것 같다...
'코딩테스트' 카테고리의 다른 글
[2020-11-11] 수박수박수박수박수박수? (0) | 2020.11.11 |
---|---|
[2020-11-11] 서울에서 김서방 찾기 (0) | 2020.11.11 |
[2020-11-10] 문자열 내 p와 y의 개수 (0) | 2020.11.10 |
[2020-11-09] 문자열 내 마음대로 정렬하기 (0) | 2020.11.10 |
[2020-11-05] 나누어 떨어지는 숫자 배열 (0) | 2020.11.05 |