본문 바로가기
알고리즘/SWEA

[Java] SWEA 4261번 빠른 휴대전화 키패드

by 컴공맨 2021. 2. 11.
 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com


풀이

알파벳 소문자가 총 26개이므로 26개의 배열을 만들어 각각의 키패드 번호를 저장하여 입력받은 문자열과 키패드입력 순서가 같은지 비교하여 해결하였습니다.


코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Solution {
	public static int[] keypad = new int[26];
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder("");
		StringTokenizer st;
		
		initKeypad();
		
		int T = Integer.parseInt(br.readLine());
		for (int tc = 1; tc <= T; ++tc) {
			st = new StringTokenizer(br.readLine());
			String S = st.nextToken();
			int N = Integer.parseInt(st.nextToken());
			
			st = new StringTokenizer(br.readLine());
			int answer = 0;
			for (int i = 0; i < N; ++i) {
				String word = st.nextToken();
				
				answer++;
				for (int j = 0; j < word.length(); ++j) {
					if (S.charAt(j) - '0' != keypad[word.charAt(j) - 'a']) {
						answer--;
						break;
					}
				}
			}
			
			sb.append("#").append(tc).append(" ").append(answer).append("\n");
		}
		
		System.out.println(sb);
	}
	
	public static void initKeypad() {
		int num = 1;
		int cnt = 0;

		for (int i = 'a'; i <= 'z'; ++i) {
			if (cnt % 3 == 0) {
				num++;
			}
			
			cnt++;
			
			if (i == 's' || i == 'z') {
				num--;
				cnt = 0;
			}
			
			keypad[i - 'a'] = num;
		}
	}
}

 

pyo7410/Algorithm

1일 1커밋을 목표로! Contribute to pyo7410/Algorithm development by creating an account on GitHub.

github.com