[프로그래머스 / JAVA] Level 1 문자열 내 p와 y의 개수 (12916)
⏰ 2021-12-16 (목) 21:16:32
문자열 내 p와 y의 개수
랭크 | 사용 언어 |
---|---|
Level 1 |
문제 설명
대문자와 소문자가 섞여있는 문자열 s
가 주어집니다. s
에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 return 하는 solution
를 완성하세요. 'p', 'y' 모두 하나도 없는 경우는 항상 True를 리턴합니다. 단, 개수를 비교할 때 대문자와 소문자는 구별하지 않습니다.
예를 들어 s가 "pPoooyY"면 true를 return하고 "Pyy"라면 false를 return합니다.
제한 조건
- 문자열
s
의 길이 : 50 이하의 자연수 - 문자열
s
는 알파벳으로만 이루어져 있습니다.
입출력 예
s | answer |
---|---|
"pPoooyY" | true |
"Pyy" | false |
입출력 예 설명
입출력 예 #1
'p'의 개수 2개, 'y'의 개수 2개로 같으므로 true를 return 합니다.
입출력 예 #2
'p'의 개수 1개, 'y'의 개수 2개로 다르므로 false를 return 합니다.
풀이
문자열의 p와 y의 갯수를 비교해서, 같으면 true
, 아니면 false
를 반환하면 되는 간단한 문제다.
p와 y는 대소문자 구분을 하지 않으므로, 편의를 위해 toLowerCase()
메서드를 적용시켜 전부 소문자로 만든다.
이후 문자열 s
의 각 문자를 탐색하여 p와 y의 갯수를 산출, 비교하면 된다.
여기서는 s
를 한 글자씩 분리하여 배열로 만들고, 스트림을 활용하여 p와 y의 갯수를 산출, 이를 비교하는 방식을 취한다.
코드
JAVA
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
import java.util.Arrays; /** * 문자열 내 p와 y의 개수 클래스 * * @author RWB * @since 2021.12.13 Mon 15:01:11 */ class Solution { /** * 해답 반환 메서드 * * @param s: [String] 문자열 * * @return [String[]] 해답 */ public boolean solution(String s) { int p = (int) Arrays.stream(s.toLowerCase().split("")).filter(item -> item.equals("p")).count(); int y = (int) Arrays.stream(s.toLowerCase().split("")).filter(item -> item.equals("y")).count(); return p == y; } }
toLowerCase()
를 적용하는 것 말고도 equalsIgnoreCase()
를 사용하여 대소문자에 관계없이 글자를 비교해도 된다.
🏷️ 태그
# 프로그래머스
# 알고리즘
# JAVA(자바)
# Level 1
읽어주셔서 고마워요!
도움이 되셨다면, 공감이나 댓글을 달아주시는 건 어떤가요?
블로그 운영에 큰 힘이 됩니다.