Notice
Recent Posts
Recent Comments
Link
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Tags more
Archives
Today
Total
관리 메뉴

ultra_dev

문자열.가장 짧은 문자거리 본문

알고리즘

문자열.가장 짧은 문자거리

ultra_dev 2023. 1. 12. 01:33

10. 가장 짧은 문자거리

설명

한 개의 문자열 s와 문자 t가 주어지면 문자열 s의 각 문자가 문자 t와 떨어진 최소거리를 출력하는 프로그램을 작성하세요.

입력

첫 번째 줄에 문자열 s와 문자 t가 주어진다. 문자열과 문자는 소문자로만 주어집니다.

문자열의 길이는 100을 넘지 않는다.

출력

첫 번째 줄에 각 문자열 s의 각 문자가 문자 t와 떨어진 거리를 순서대로 출력한다.

예시 입력 1

teachermode e

예시 출력 1

1 0 1 2 1 0 1 2 2 1 0

📌오른쪽부터 체크하는 for문. 왼쪽부터 체크하는 for문

📌Math.min(,)으로 더 작은 수 넣

import java.util.Scanner;
import java.util.*;
class Main {
    public int[] solution(String str, char t) {
        int[] answer = new int[str.length()];
        //엄청 큰 수 일단 잡고
        //왼쪽에서부터 체크하는 for문
        int p = 1000;
        for (int i = 0; i < str.length(); i++) {
            if (str.charAt(i) == t) {
                p = 0;
                answer[i] = p;
            } else {
                p++;
                answer[i] = p;
            }
        }
        //주의!! 위에 for문 닫고 즉 위에 숫자가 입력된상태에서 밑에거랑 더 작은거로 바꾸는 것
            //다시 오른쪽부터 체크하는 for문 하기!
            p = 1000;
            for (int j = str.length() - 1; j >= 0; j--) {
//                answer가 0되는 건 위에랑 동일하니 주석처리 중복되니 굳이 안해줘도 되는 ㅋㅋ
//                if(str.charAt(i) == t) {
//                    p=0;
//                    answer[j] = p;
//                }
                if (str.charAt(j) == t) p = 0;
                else {
                    p++;
                    //
//                    answer[j] = p; <ㅡ 안됨 왜? 위에 왼쪽부터랑 지금 오른쪽부터랑 더 작은쪽 넣어줘야하니
                    //더 작은 값 넣어주기인 Math.min(,) 활용하기
                    answer[j] = Math.min(answer[j], p);
                }
            }
        return answer;
        }

    public static void main(String[] args) {
        Main T = new Main();
        Scanner sc = new Scanner(System.in);
        String str = sc.next();
        char c = sc.next().charAt(0);
        for (int x : T.solution(str, c)) {
            System.out.println(x + " ");
        }
    }
}

'알고리즘' 카테고리의 다른 글

문자열.암호  (0) 2023.01.12
문자열.문자열 압축  (0) 2023.01.12
문자열. 숫자만 추출  (0) 2023.01.12
문자열.유효한 팰린드롬  (0) 2023.01.12
문자열.문장 속 단어(indexOf(),substring())  (0) 2023.01.12
Comments