알고리즘 기초 주차 - 3번 문제 풀이 방법
본문 바로가기
항해 중/2주차 알고리즘(프로그래머스)

알고리즘 기초 주차 - 3번 문제 풀이 방법

by 은돌1113 2021. 11. 13.

문제설명
배열 arr와 정수 n이 주어집니다. 배열 arr의 각 원소는 문자열로 이루어져 있습니다.
이때, 배열 arr에서 중복되는 단어는 하나만 남기고 전부 제거하려고 합니다.
단, 제거된 후 남은 단어들을 반환 할 때는 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다.

제한사항
- strings는 길이 1 이상, 50 이상인 배열입니다.
- strings의 원소는 소문자 알파벳으로 이루어져 있습니다.
- strings의 원소는 1 이상, 100 이하인 문자열입니다.
- 모든 strings의 원소의 길이는 n보다 큽니다.
- 인덱스 1의 문자가 같은 문자열이 여럿 일 경우, 사전순으로 앞선 문자열이 앞쪽에 위치 합니다.

입출력 예

지정 입력값

문제풀이

function solution(arr, n){ 
	// 중복되지 않은 단어를 넣을 배열 new_arr 생성 
    let new_arr = [] 
    
    // arr의 요소가 new_arr에 있는 지 없는 지 검사 
    for(let i = 0; i<arr.length; i++){ 
    	let check = new_arr.includes(arr[i]) 
    
    // 없으면 push, 있으면 아무것도 하지 않는다. 
    if(check == false){ 
    	new_arr.push(arr[i]) } 
    } 
    
    // return 1은 배열에 앞에 배치 
    // return -1은 배열에 뒤에 배치 
    // return 0은 배열에서 이동 없음 
    new_arr = new_arr.sort((a,b)=>{ 
    	if(a[n]>b[n]){ return 1; 
    	}else if(a[n]<b[n]){ return -1; 
    	}else if(a[n]===b[n]){ 
    		if(a > b){ return 1 
    		}else{ return -1 } 
    	}else{ return 0 } 
    }) 
return new_arr 
} 
    
console.log(solution(['brush', 'sun', 'brush', 'bed', 'car'], 1))

1) 중복되지 않은 단어를 넣을 배열 new_arr 생성
2) arr의 요소가 new_arr에 있는 지 없는 지 검사
3) 없으면 new_arr에 push 한다
4) sort() 함수를 사용해서
- return 1은 배열에 앞에 배치
- return -1은 배열에 뒤에 배치
- return 0은 배열에서 이동 없음

댓글