[JAVA] 문자열 내 p와 y의 개수

태로미·2023년 9월 7일
0

Programmers

목록 보기
6/29
post-thumbnail

❓문제


대문자와 소문자가 섞여있는 문자열 s가 주어집니다.
s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 return 하는 solution를 완성하세요.
'p', 'y' 모두 하나도 없는 경우는 항상 True를 리턴합니다.
단, 개수를 비교할 때 대문자와 소문자는 구별하지 않습니다.
예를 들어 s가 "pPoooyY"면 true를 return하고 "Pyy"라면 false를 return합니다.



🚫제한


  • 문자열 s의 길이 : 50 이하의 자연수
  • 문자열 s는 알파벳으로만 이루어져 있습니다.


💻입출력 예


sanswer
"pPoooyY"true
"Pyy"false

입출력 예 #1
'p'의 개수 2개, 'y'의 개수 2개로 같으므로 true를 return 합니다.
입출력 예 #2
'p'의 개수 1개, 'y'의 개수 2개로 다르므로 false를 return 합니다.














📝해결


1. 변수 count 하나만 사용

class Solution {
	boolean solution(String s) {
    
		int count = 0;
        for(int i = 0; i < s.length(); i++) {
            if(s.charAt(i) == 'p')
                count++;
            else if(s.charAt(i) == 'y')
                count--;
  		}
        
        return count == 0 ? true : false;
	}
}
  • charAt(index) 메서드는 문자열의 i번째 문자를 char타입으로 변환해주는 것.
  • 누적합(+)과 누적차(-)를 이용하여 변수 count 하나로 활용.
  • 마지막 return문에서 삼항연산자를 사용.
    – 삼항연산자는 실무에선 복잡하고 가독성이 떨어져서 잘 사용 안한다고 하니 참고하기.

2. toUpper / LowerCase() 메서드

class Solution {
	boolean solution(String s) {
    
      int p = 0, y = 0;
      String str = s.toLowerCase();

      for (int i = 0; i < str.length(); i++) {
          if (str.charAt(i) == 'p') p++;
          if (str.charAt(i) == 'y') y++;
      }

	  if (p != y) answer = false;

	  return answer;
	}
}
  • 대소문자에 Upper/LowerCase 메서드를 사용하면 비교문 하나만 사용하여 해결 가능.
  • 어차피 ‘p’와 ‘y’의 개수가 중요한 것이므로 소문자나 대문자로 모두 바꾼 후에 카운트하기.
    toUpperCase()toLowerCase()equalsIgnoreCase()equals()
    문자열을 대문자로 변경문자열을 소문자로 변경대소문자 구분X대소문자 구분O






💭마무리

  • Level_1 / 16:04
  • Point
    – 변수의 쓰임새
    – 문자열의 메서드 익히기

아무 생각없이 여겼던 메서드가 이렇게 활용되는게 신기하네ㅎㅎㅎ
코테하면서 다양한 메서드를 써보고 기억에 새기는것이 좋겠다!
아는 것이 힘이다. 알면 알수록 다양한 풀이의 길이 보이는 듯~😎


profile
Here And Now

0개의 댓글