문자열 내 p와 y의 개수

문제정의


문자열 내에 p와 y의 개수를 세어 둘 다 동일하면 true를 그렇지 않다면 false를 반환한다.

문제풀이


전체 코드는 다음과 같다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class CntpCnty {

public static void main(String[] args)
{
String s = "pPoooyY";
boolean answer = true;
int p = 0, y = 0;
s = s.toLowerCase();
for(int i = 0; i < s.length(); i++)
{
if(s.charAt(i) == 'p')
p++;
else if(s.charAt(i) == 'y')
y++;
}

if(p!=y)
answer = false;
}
}
toLowerCase를 이용해 문자열에 있는 모든 문자를 소문자로 바꾸었다. 그리고 하나씩 비교하여 p와 y의 개수를 센다. 만약 두 수가 같지 않다면 answer를 false로 바꾼다. 총 시간복잡도는 \(O(n)\)이다.

테스트



p와 y의 변수를 따로 해서 계산하였는데, 다른 사람의 풀이를 보니 변수르 하나로 하여 증감을 이용해 푸는 것을 보았다. 변수 하나 차이긴 하지만 코드를 줄일 수 있는 방법 중에 하나로 기억해놔야겠다.