[프로그래머스] Java 코딩테스트 - 문자 개수 세기

yihyun·2025년 4월 27일

코딩테스트

목록 보기
79/105
post-thumbnail

문자 개수 세기

✅ 문제 설명

알파벳 대소문자로만 이루어진 문자열 my_string이 주어질 때, my_string에서 'A'의 개수, my_string에서 'B'의 개수,..., my_string에서 'Z'의 개수, my_string에서 'a'의 개수, my_string에서 'b'의 개수,..., my_string에서 'z'의 개수를 순서대로 담은 길이 52의 정수 배열을 return 하는 solution 함수를 작성해 주세요.

✅ 제한사항

1 ≤ my_string의 길이 ≤ 1,000

🔽 소스코드

💻 풀이

  • 아스키 코드를 활용한 풀이로 대문자 65 ~ 90 / 소문자 97 ~ 122 범위를 이용해 풀어주었다.
  • 먼저 for문을 사용해 문자열 길이만큼 반복문을 실행해주고,
  • charAt()을 사용해 문자열을 하나씩 분리해준다.
  • 이후 'A' 와 같거나 크고, 'Z' 보다 같거나 작을 경우 배열에 1을 더해준다.
  • 이는 만약 문자가 B일 경우 'B' - 'A' 로 arr[1]의 위치에 1이 추가되게 된다.
  • 소문자일 경우에는 배열의 인덱스 위치인 26을 더해주어 정확한 위치에 값이 들어갈 수 있도록 해주었다.
	public int[] solution1(String my_string) {
		int[] arr = new int[52];
		
		for(int i = 0; i < my_string.length(); i++) {
			char ch = my_string.charAt(i);
			
			// 문자가 대문자일 경우
			if('A' <= ch && ch <= 'Z') {
				arr[ch - 'A']++; // 알파벳 순서에 맞춰 값 증가
				// ex. B - A = 1 → arr[1]++;
				
			// 문자가 소문자일 경우 (인덱스 26~51)
			}else if('a' <= ch && ch <= 'z') {
				arr[ch - 'a' + 26]++;
			}
		}
		
		return arr;
	}
profile
개발자가 되어보자

0개의 댓글