Recent Posts
Link
250x250
오늘보다 더 나은 내일의 나에게_
자바 알고리즘 문제 풀이 String Q10_가장 짧은 문자거리 본문
728x90
설명
한 개의 문자열 s와 문자 t가 주어지면 문자열 s의 각 문자가 문자 t와 떨어진 최소거리를 출력하는 프로그램을 작성하세요.
입력
첫 번째 줄에 문자열 s와 문자 t가 주어진다. 문자열과 문자는 소문자로만 주어집니다.
문자열의 길이는 100을 넘지 않는다.
출력
첫 번째 줄에 각 문자열 s의 각 문자가 문자 t와 떨어진 거리를 순서대로 출력한다.
예시 입력1
예시 출력teachermode e 1 0 1 2 1 0 1 2 2 1 0
코드
내가 입력한 코드
더보기미완성
package String; import java.util.Scanner; import java.util.StringTokenizer; public class Q10 { public String solution(String str) { String answer = ""; StringTokenizer st = new StringTokenizer(str); String s = st.nextToken(); char[] c = s.toCharArray(); char t = st.nextToken().charAt(0); for (int i = 0; i < c.length; i++) { if(c[i] == t) { c[i] = 48; int num = 48; for (int j = i-1; j >= 0; j--) { if(c[j]==48) { break; }else { num++; c[j] = (char)num; } }// end of 2for }// end of if } //end of for for (int i = 0; i < c.length; i++) { if(c[i] == 48) { int num = 48; for (int j = i+1; j < c.length; j++) { if(c[j]==48) { break; }else if(c[j]>num){ num++; c[j] = (char)num; } }// end of 2for }// end of if } //end of for answer = String.copyValueOf(c); for (int i = 0; i < answer.length()-1; i++) { answer.charAt(i); } return answer; } public static void main(String[] args) { Q10 T = new Q10(); Scanner kb = new Scanner(System.in); String str = kb.nextLine(); System.out.println(T.solution(str)); } }
해설 코드
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+" "); } } }
풀이 및 정리
=> Math.min( ) 두개의 매개변수를 가지며 두 값을 비교해 더 작은 값을 반환
728x90
'ALGORITHM > inflearn_javaAlgorithm' 카테고리의 다른 글
자바 알고리즘 문제 풀이 String Q12_암호 (0) | 2022.02.06 |
---|---|
자바 알고리즘 문제 풀이 String Q11_문자열 압축 (0) | 2022.02.04 |
자바 알고리즘 문제 풀이 String Q09_숫자만 추출 (0) | 2022.02.02 |
자바 알고리즘 문제 풀이 String Q08_유효한 팰린드롬 (0) | 2022.01.31 |
자바 알고리즘 문제 풀이 String Q07_회문 문자열 (0) | 2022.01.28 |
Comments