Algorithm/Java알고리즘 문제풀이 & Kotlin

[Algorithm] 가장 짧은 문자거리

2022. 6. 20. 17:42
반응형

한 개의 문자열 a와 문자 b가 주어지면 문자열 a의 각 문자가 문자 b와 떨어진 최소거리를 출력하는 알고리즘 문제


import java.util.Scanner;

public class Main {
    public int[] solution(String s, char c) {
        int[] answer = new int[s.length()];
        int num = 1000;
        for (int i = 0; i < s.length(); i++) {
            if (s.charAt(i) == c){
                num = 0;
            } else {
                num++;
            }
            answer[i] = num;
        }
        num = 1000;
        for (int i = s.length()-1; i>=0; i--){
            if (s.charAt(i) == c){
                num = 0;
            } else {
                num++;
                answer[i] = Math.min(answer[i], num);
            }
        }
        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.print(x + " ");
        }
    }
}

 

이 문제를 풀때 왜 첫번째 숫자를 0이아닌 1000을 넣어야 하는지 이해를 하지 못했습니다.

 

다른 케이스문제를 보고 디버깅을 한 후

num이 0이라면 찾는 단어가 c라면 

a b c d e f d
1 1 0 1 2 3 4

 a는 오른쪽에서 올바른 거리를 찾는다 하더라도 최소값이 1이기 때문에 실패하는 케이스가 됩니다.

 

num이 1000이라면 

a b c d e f d
1001 1 0 1 2 3 4

왼쪽부터 for문을 돌린다면 1001이 될것이고

다시 오른쪽으로 for문을 돌린다면

a b c d e f d
2 1 0 1 2 3 4

올바른 값 2가 나올것입니다.

반응형
저작자표시 비영리 변경금지 (새창열림)

'Algorithm > Java알고리즘 문제풀이 & Kotlin' 카테고리의 다른 글

[Algorithm] 암호  (0) 2022.06.22
[Algorithm] 문자열 압축  (0) 2022.06.21
[Algorithm] 문장 속 단어  (0) 2022.03.20
[Algorithm] 대소문자 변환  (0) 2022.03.20
[Algorithm] 문자 찾기(String)  (0) 2022.03.18
'Algorithm/Java알고리즘 문제풀이 & Kotlin' 카테고리의 다른 글
  • [Algorithm] 암호
  • [Algorithm] 문자열 압축
  • [Algorithm] 문장 속 단어
  • [Algorithm] 대소문자 변환
yunJaem06
yunJaem06
yunJaem06
비바윤
yunJaem06
전체
오늘
어제
  • 전체 (147)
    • Algorithm (121)
      • [알고리즘]BACKJOON - Java&Kotli.. (98)
      • Java알고리즘 문제풀이 & Kotlin (23)
    • Kotlin (4)
    • Android (17)
    • CS (1)
      • 소프트웨어공학 (1)
      • 운영체제 (0)
      • 컴퓨터구조 (0)
    • 내가 좋아하는 맛집 :) (0)
    • 다시 볼만한 영화 & 드라마 (0)

블로그 메뉴

  • 홈

공지사항

인기 글

태그

  • Livedata
  • DataBinding
  • splash화면
  • 중복문자제거
  • 1장
  • Kotiln
  • 라이브러리
  • 알고리즘
  • lottie
  • 코틀린
  • 가위 바위 보
  • ViewModelFactory
  • 특정 문자 뒤집기
  • Lifecycle
  • qr
  • 생명주기
  • 안드로이드
  • AndroidViewModel
  • zxing
  • 3장
  • 캡슐화
  • kotlin
  • Android
  • 양방향
  • reversed
  • MutableLiveData
  • 배열
  • ViewModel
  • Kotlin In Action
  • Java

최근 댓글

최근 글

hELLO · Designed By 정상우.
yunJaem06
[Algorithm] 가장 짧은 문자거리
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.