가끔 내 실력을 모르겠다.. 레벨 2가 쉽다가도 레벨 1이 가끔 어려워서 내 자존감을 깎는다..
그럴때면 정답률이 높은 문제를 풀면서 다시 재미를 느끼게 해줘야한다.
아무튼 이번에 푼 문제는 얼핏보면 for문을 돌려 카운팅을 해주면 되는 문제 같지만 그 방식으로 풀지 않아서 블로그에 남겨보려 한다.
- 문자열 내 p와 y의 개수
https://school.programmers.co.kr/learn/courses/30/lessons/12916?language=java
문제를 보면 p,P의 갯수와 y,Y의 갯수를 비교한다.
그래서 처음엔 String문자열을 toArray를 이용하여 char로 하나씩 비교하고 카운팅한 갯수를 비교해보려고 했다.
이렇게 되면 변수를 두개나 선언해야 되고 for문도 보기 싫어진다....
예전에 푼 문제 중에 길이의 차로 구했던 문제가 있어 한번 적용해보았다.
class Solution {
boolean solution(String s) {
return s.replaceAll("[^pP]", "").length() == s.replaceAll("[^yY]", "").length();
}
}
이햐..
마음에 드네요🫶 모처럼만에 정말 마음에 드는 간결한 코드다ㅠㅠ 가급적 for문과 if를 지양하고 싶다..!
💡풀이
정규식을 사용하여 p,P만 남겨둔 문자열의 길이와 y,Y만 남겨둔 문자열의 길이를 비교하여 같으면 true를 반환한다.
네개의 문자가 모두 없어도 true가 반환도 성립된다.
💡 다른풀이로 문자열을 toUpCase나 toLowCase를 해서 비교하면 정규식이 더 짧아질 것 같다.
또, 람다를 사용해서도 한줄로 끝낼 수 있다.
class Solution {
boolean solution(String s) {
s = s.toUpperCase();
return s.chars().filter( e -> 'P'== e).count() == s.chars().filter( e -> 'Y'== e).count();
}
}
'TIL' 카테고리의 다른 글
[TIL] 프로그래머스 숫자의 표현 효율성 테스트 실패ㅠㅠ (1) | 2023.11.03 |
---|---|
[TIL] Stream API method 탐구2, 객체 리스트와 map, flatMap (0) | 2023.10.27 |
[TIL] Stream API method 탐구, map과 filter (0) | 2023.10.24 |
[TIL] Spring Security 하나의 url에 두 개의 역할이 가능하도록 권한을 주고싶다 (0) | 2023.10.15 |
[TIL] 반성의 TIL... Junit MockMvc.perform 에서 session 사용하기.. (0) | 2023.10.12 |