기초코딩테스트 - String 가장짧은거리
문제
설명
한 개의 문자열 s와 문자 t가 주어지면 문자열 s의 각 문자가 문자 t와 떨어진 최소거리를 출력하는 프로그램을 작성하세요.
입력
첫 번째 줄에 문자열 s와 문자 t가 주어진다. 문자열과 문자는 소문자로만 주어집니다.
문자열의 길이는 100을 넘지 않는다.
출력
첫 번째 줄에 각 문자열 s의 각 문자가 문자 t와 떨어진 거리를 순서대로 출력한다.
예시 입력 1
teachermode e
예시 출력 1
1 0 1 2 1 0 1 2 2 1 0
코드
import java.util.*;
class Main {
public int[] solution(String s, char t){
int[] answer=new int[s.length()];
int p=1000;
for(int i=0; i<s.length(); i++){
if(s.charAt(i)==t){
p=0;
answer[i]=p;
}
else{
p++;
answer[i]=p;
}
}
p=1000;
for(int i=s.length()-1; i>=0; i--){
if(s.charAt(i)==t) p=0;
else{
p++;
answer[i]=Math.min(answer[i], p);
}
}
return answer;
}
public static void main(String[] args){
Main T = new Main();
Scanner kb = new Scanner(System.in);
String str=kb.next();
char c=kb.next().charAt(0);
for(int x : T.solution(str, c)){
System.out.print(x+" ");
}
}
}
import java.util.*;
class Main {
public int[] solution(String s, char t){
int[] answer=new int[s.length()];
int p=1000;
for(int i=0; i<s.length(); i++){
if(s.charAt(i)==t){
p=0;
answer[i]=p;
}
else{
p++;
answer[i]=p;
}
}
p=1000;
for(int i=s.length()-1; i>=0; i--){
if(s.charAt(i)==t) p=0;
else{
p++;
answer[i]=Math.min(answer[i], p);
}
}
return answer;
}
public static void main(String[] args){
Main T = new Main();
Scanner kb = new Scanner(System.in);
String str=kb.next();
char c=kb.next().charAt(0);
for(int x : T.solution(str, c)){
System.out.print(x+" ");
}
}
}
첫시작을 최대길이를 막연히 큰숫자인 1000으로 두고 탐색 시작 한방향식 두번 탐색해서 거리를 계산한다.
오른쪽으로 진행해서 같은 글자 나오면 0으로 리셋후 그다음부터 거리를 계산해서 int 리스트에 넣어준다.
그후 왼쪽으로 탐색 진행해서 구한 숫자값과 이전에 구해놓은 숫자의 최소값으로 교체해준다.
Author And Source
이 문제에 관하여(기초코딩테스트 - String 가장짧은거리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@narangke3/기초코딩테스트-String-가장짧은거리저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)