[알고리즘] 문자열(2)

ho's·2022년 5월 13일
0

문제

처음 풀이

풀이

  1. 문자열을 받아들이고, split(" ")을 통해 띄어쓰기 단위로 String[] 배열에 저장한다.
  2. 배열의 크기만큼 for문을 돌린다.
  3. 조건문 처리 (길이가 가장 긴 배열을 찾기)
int max = 0;
for(int i=0;i<arr.length;i++){
	if(arr[max].length() <= arr[i].length()){
    	arr[max] = arr[i];
    }
}
  1. 예외처리 - 문제에서 요구한 것은 최대길이가 여러개일 경우 가장 앞의 문자를 출력하라고 했다.

소스코드

문제점

위와 같이 문자열의 길이가 같으면, 가장 앞의 문자열을 출력해야하는데 가장 뒤에것을 출력한다.

정답 소스코드

위의 코드 수정

그냥 등식만 빼주면 되는것이었는데, 너무 복잡하게 생각했다.

solution 메소드를 이용한 방법

IndexOf와 SubString 을 이용한 방법

package algolecture;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main3 {
    public String solution(String str){
        String answer = "";
        int m = Integer.MIN_VALUE, pos;
        while((pos=str.indexOf(' ')) != -1){
            String tmp = str.substring(0, pos);
            int len = tmp.length();
            if(len > m){
                m=len;
                answer = tmp;
            }
            str = str.substring(pos+1);
        }

        if(str.length()>m)
            answer = str;
            return answer;
    }

    public static void main(String[] args) throws IOException {

        Main3 T = new Main3();
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String str = br.readLine();
        System.out.println(T.solution(str));

    }
}

profile
그래야만 한다

0개의 댓글