일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- 오늘공부
- programming language
- 인턴교육
- React
- JWT
- 주니어에서시니어로
- 개발공부
- 스파르타코딩클럽 #항해99파트1기 #bootstrap
- 데이터분석
- 채소마켓
- metacode
- 프로그래머스
- 딥러닝
- 백엔드
- 티스토리챌린지
- javascript
- 메타코드
- 이커머스고객이탈예측
- 입학시험 #난이도높음
- wil
- 슈퍼코딩
- 항해99
- 코딩교육
- 액세스토큰
- 취업연계
- 객채
- 오블완
- 프리온보딩
- Weekly회고
- 취업준비 #추석연휴 #꿈
- Today
- Total
하루를 끝내며 다짐하기
프로그래머스 JAVA LV.1 문자열 내 p와 y의 개수 본문
문제에서 정리해봐야할 요점
주어진 문자열 s에서 문자 'p'와 'y'의 개수를 비교하는 문제입니다. 다음 규칙을 따른다.
- 대소문자를 구분하지 않는다. 즉, 'P'와 'p'는 같은 문자로 처리되며, 'Y'와 'y'도 마찬가지이다.
- 'p'와 'y'의 개수가 같다면 true를 반환한다.
- 'p'와 'y'의 개수가 다르다면 false를 반환한다.
- 문자열에 'p'와 'y'가 모두 없다면, 두 개의 개수가 모두 0이므로 true를 반환한다
문제 풀이:
class Solution {
boolean solution(String s) {
s = s.toUpperCase();
return s.chars().filter( e -> 'P'== e).count() == s.chars().filter( e -> 'Y'== e).count();
}
}
1. s = s.toUpperCase();
입력 문자열 s를 모두 대문자로 변환합니다.
이 과정으로 대소문자를 구분하지 않고 'P'와 'Y'를 처리할 수 있게 됩니다.
예를 들어, "pPoooyY"는 "PPOOOYY"로 변환됩니다.
2. s.chars()
s.chars()는 문자열을 각 문자의 Unicode 값(int)로 이루어진 스트림(IntStream)으로 변환합니다.
예를 들어, "PPOOOYY"는 [80, 80, 79, 79, 79, 89, 89]로 변환됩니다.
3. .filter(e -> 'P' == e)
스트림에서 'P'와 같은 값을 가진 문자만 필터링합니다.
'P'의 Unicode 값은 80입니다. 따라서 'P' == e 조건은 80 == e와 동일하게 동작합니다.
예를 들어, [80, 80, 79, 79, 79, 89, 89]에서 'P'만 필터링하면 [80, 80]이 남습니다.
4. .count()
필터링된 결과의 개수를 셉니다.
위 예시에서 [80, 80]의 개수는 2입니다.
5. s.chars().filter(e -> 'Y' == e).count()
동일한 방식으로 'Y'에 해당하는 문자만 필터링하여 개수를 셉니다.
예를 들어, [80, 80, 79, 79, 79, 89, 89]에서 'Y'만 필터링하면 [89, 89]이 남고 개수는 2입니다.
== 비교 연산
'P'와 'Y'의 개수를 비교합니다.
두 개수가 같으면 true를 반환하고, 다르면 false를 반환합니다.
'Algorithm' 카테고리의 다른 글
핸드폰 번호 가리기 (2) | 2023.04.19 |
---|---|
정수의 배열 평균 값 구하기 (0) | 2023.04.19 |
정수 내림차 순으로 배치하기 (0) | 2023.04.15 |
자연수를 뒤집어 배열로 만들기 (0) | 2023.04.15 |
Even 과 Odd 를 반환하는 함수 (0) | 2023.04.14 |