# 오늘의 학습 키워드
문자열
# 오늘의 문제
대문자와 소문자가 섞여있는 문자열 s가 주어집니다. s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 return 하는 solution를 완성하세요. 'p', 'y' 모두 하나도 없는 경우는 항상 True를 리턴합니다. 단, 개수를 비교할 때 대문자와 소문자는 구별하지 않습니다.
예를 들어 s가 "pPoooyY"면 true를 return하고 "Pyy"라면 false를 return합니다.
제한사항
- 문자열 s의 길이 : 50 이하의 자연수
- 문자열 s는 알파벳으로만 이루어져 있습니다.
# 나의 풀이방식
class Solution {
boolean solution(String s) {
boolean answer = true;
int pCnt = 0;
int yCnt = 0;
for(int i=0; i<s.length(); i++){
char chr = s.charAt(i);
String str = String.valueOf(chr);
if(str.equalsIgnoreCase("p")){
pCnt ++;
}else if(str.equalsIgnoreCase("y")){
yCnt ++;
}
}
if(pCnt != yCnt ) {
answer = false;
}
return answer;
}
}
# 다른사람 풀이
class Solution {
boolean solution(String s) {
s = s.toUpperCase();
return s.chars().filter( e -> 'P'== e).count() == s.chars().filter( e -> 'Y'== e).count();
}
}
# 오늘의 공부
chars() : 문자열을 구성하고 있는 문자들의 ASCII 코드값을 스트림 형태로 뽑아줌
filter(e->e) : stream 메소드로 조건에 따라 데이터를 선별할때 사용
* filter() 외 stream 관련 메소드들
limit(n) : 데이터 갯수 제한
skip(n) : 처음 n개를 건너뜀
takeWhile() : 스트림을 순회하다가 조건이 false이면 나머지 데이터를 버림
dropWhile() : 스트림을 순회하다가 조건이 true이면 나머지 데이터를 버림
map() : 스트림 요소 데이터를 변환
anyMatch() : 조건에 맞는 요소 1개라도 있으면 true면 반환
allMatch() : 모든 요소가 조건에 맞으면 true 반환
nonMatch() : 모든 요소가 조건에 해당하지않으면 true 반환
findAny() : 조건에 해당하는 데이터를 반환
findFirst() : 조건에 해당하는 첫번째 데이터를 반환
reduce() : 데이터를 연쇄적으로 계산할때 사용
# 오늘의 회고
평소에 사용하던 메소드만 사용하다보니 문제 풀이에 한계가 있는것 같다.
stream 관련 메소드 좀 공부해놔야겠다.
'개발 공부 > TIL(Today I Learned)' 카테고리의 다른 글
99클럽 코테 스터디 6일차 TIL 포켓몬 (0) | 2024.07.28 |
---|---|
99클럽 코테 스터디 5일차 TIL 완주하지 못한 선수 (0) | 2024.07.27 |
99클럽 코테 스터디 4일차 TIL 문자열을 정수로 바꾸기 (0) | 2024.07.25 |
99클럽 코테 스터디 2일차 TIL 평균 구하기 (0) | 2024.07.23 |
99클럽 코테 스터디 1일차 TIL 자연수 뒤집어 배열로 만들기 (2) | 2024.07.22 |