728x90
반응형

class Solution {
boolean solution(String s) {
boolean answer = true;
String[] str = s.toLowerCase().split("");
int countP = 0;
int countY = 0;
for(int i=0; i<str.length; i++) {
if(str[i].equals("p")){
countP++;
} else if(str[i].equals("y")) {
countY++;
}
if(countP == countY || (countP == 0 && countY == 0)) {
answer = true;
} else {
answer = false;
}
}
return answer;
}
}
보자마자 생각난 코드다.
너무 길고 가독성도 떨어지고 아직 많이 부족함이 보인다.
찾아보니 문자열을 문자 배열로 변환 후, for-each 루프를 사용하여 각 문자를 반복하는 메소드가 있었다.
class Solution {
boolean solution(String s) {
String lowercaes = s.toLowerCase();
int countP = 0;
int countY = 0;
for(char c : lowercase.toCharArray()) {
//toCharArray() 메소드를 사용하여 문자열을 문자 배열로 변환 후, 반복
if(c == 'p') {
countP++;
} else if(c == 'y') {
countY++;
}
}
return countP == countY;
}
}
좋은 코드인지는 모르겠지만 가독성을 더 좋게 만들어봤다.
다른 사람이 푼 코드를 보니
class Solution {
boolean solution(String s) {
s = s.toUpperCase();
return s.chars().filter(e->'P'==e).count()==s.chars().filter(e->'Y'==e).count();
}
}
문자열을 대문자로 변환하고
P와 Y의 수가 같은지 비교한 후 결과를 반환하는 스트림을 이용한 코드이다.
s.chars() 문자열을 s의 모든 문자를 스트림 형태로(아스키코드)
filter(e -> 'P' == e) 스트림에서 람다 표현식을 만족하는 요소만 필터링
count() 필터링된 스트림의 요소의 수를 계산
스트림과 람다 공부를 열심히 해야겠다.
728x90
반응형
'Algorithm > 프로그래머스' 카테고리의 다른 글
| [프로그래머스/Java]Comparator와 copyOfRange (0) | 2023.09.30 |
|---|---|
| [프로그래머스/Java] 정수 제곱근 판별 (0) | 2023.09.13 |
| [프로그래머스/Java] 자연수 뒤집어 배열로 만들기 (0) | 2023.09.07 |
| [프로그래머스/Java] 나머지가 1이 되는 수 찾기 (0) | 2023.09.06 |
| [프로그래머스/Java] 자릿수 더하기 (0) | 2023.09.05 |