알고리즘 이야기/알고리즘 문제풀이

JS 알고리즘 TIL - 가장 긴 문자열

thisisamrd 2023. 9. 29.

오늘의 문제는 아래와 같다.

 

문제

N개의 문자열이 입력되면 그 중 가장 긴 문자열을 출력하는 프로그램을 작성하세요.  

▣ 입력설명  
첫 줄에 자연수 N이 주어진다.(3<=N<=30)  
두 번째 줄부터 N개의 문자열이 주어진다. 문자열의 길이는 100을 넘지 않습니다.  
각 문자열의 길이는 서로 다릅니다.  
▣ 출력설명  
첫 줄에 가장 긴 문자열을 출력한다.  
▣ 입력예제 1   
5  
teacher  
time  
student  
beautiful  
good  
▣ 출력예제 1  
beautiful

 

나는 이걸 괜히 이중for문으로 풀었는데 이렇게 하면  모든 문자열 쌍을 서로 비교하게 되므로 시간 복잡도가 굉장히 증가한다.

이 점을 알면서도 그냥 다른 방법이 생각이 안났다. 

권장되는 방법은 아래와 같다.

 

 

해결방법

 

 function solution(s){  
                let answer="", max=Number.MIN_SAFE_INTEGER;
                // console.log(max)
                for(let x of s){
                    if(x.length>max){
                        max=x.length;
                      // console.log(max)
                        answer=x;
                    } 
                    //else console.log('max탈락: ' + x)
                }
                return answer;
            }
            let str=["teacher", "time", "student", "beautiful", "good"];
            console.log(solution(str));

 

max를 최솟값으로 먼저 선언한 뒤, s를 순회하면서 max에 다시 대입하면 되었다.

참고로 Number.MIN_SAFE_INTEGER는 JavaScript에서 사용 가능한 가장 작은 안전한 정수를 나타내는 상수이다.

 

댓글