공부하기/백준

[Java] 백준 풀기 5218 - 알파벳 거리

XEV 2024. 3. 17. 23:35

자바 백준 5218번

브론즈 2

https://www.acmicpc.net/problem/5218

 

5218번: 알파벳 거리

첫째 줄에 테스트 케이스의 수 (< 100)가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 두 단어가 공백으로 구분되어져 있다. 단어의 길이는 4보다 크거나 같고, 20보다 작거나 같으며, 알

www.acmicpc.net

 

 

 

 

 

문제 보기

분류: 수학, 구현, 문자열

 

 

 

 

 

코드 풀이

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        // 첫 번째 줄에서 테스트 케이스의 수를 읽어 정수로 변환
        int testCases = Integer.parseInt(sc.nextLine());
        
        // 테스트 케이스의 수만큼 반복하여 각 테스트 케이스를 처리
        for (int i = 0; i < testCases; i++) {
            // 사용자로부터 두 단어를 입력받아 공백으로 구분하여 배열에 저장
            String[] words = sc.nextLine().split(" ");
            // 두 단어를 각각 문자 배열로 변환
            char[] word1 = words[0].toCharArray();
            char[] word2 = words[1].toCharArray();
            
            // calculateDistances 함수를 호출하여 두 단어 사이의 알파벳 거리를 계산
            int[] distances = calculateDistances(word1, word2);
            
            // 계산된 거리를 출력. "Distances: "로 시작하여 각 거리를 공백으로 구분하여 출력
            System.out.print("Distances: ");
            for (int distance : distances) {
                System.out.print(distance + " ");
            }
            // 각 테스트 케이스의 출력을 구분하기 위해 줄바꿈 추가
            System.out.println();
        }
    }
    
    // 두 단어 사이의 알파벳 거리를 계산하는 함수
    private static int[] calculateDistances(char[] word1, char[] word2) {
        // 계산된 거리를 저장할 정수 배열을 생성. 배열의 크기는 입력된 단어의 길이와 같음
        int[] distances = new int[word1.length];
        
        // 단어의 각 글자에 대해 반복하여 거리를 계산
        for (int i = 0; i < word1.length; i++) {
            // 두 글자 사이의 거리를 계산
            int distance = word2[i] - word1[i];
            // 거리가 음수인 경우, 26을 더하여 거리를 양수로 조정
            if (distance < 0) {
                distance += 26;
            }
            // 계산된 거리를 배열에 저장
            distances[i] = distance;
        }
        
        // 계산된 거리 배열을 반환
        return distances;
    }
}