오늘의 문제는 아래와 같다.
문제
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에서 사용 가능한 가장 작은 안전한 정수를 나타내는 상수이다.
'알고리즘 이야기 > 알고리즘 문제풀이' 카테고리의 다른 글
JS 알고리즘 - DFS로 부분집합 구하기 (1) | 2023.11.25 |
---|---|
JS 알고리즘 - sort(), Math.max() (1) | 2023.10.09 |
JS 알고리즘 - parseInt, Math.sqrt(num), 소수(prime number) 개념 이해 (0) | 2023.10.08 |
JS 알고리즘 - 2차원 탐색 상하좌우 (1) | 2023.10.01 |
JS 알고리즘 - indexOf(), filter (0) | 2023.09.30 |
댓글