[js]알고리즘 - 김서방 찾기

GY·2021년 5월 27일
0
post-thumbnail

결과물

function solution(seoul) {
		const index = seoul.indexOf('Kim');
    var answer = '김서방은'+' ' +index+ '에 있다';
    return answer;
}

과정


function solution(seoul){
	var newseoul=[];
	for(var i=0; i<seoul.length;i++){
    var seoul2=seoul[i];
    if(seoul2=='Kim'){newseoul.push(seoul2)}
                        }
return newseoul;
}
//바로 위 문제풀이 방식을 적용해보면 풀수 있지 않을까 했는데 , 잘못 접근했다.
//for문으로 전체 배열을 훑은 다음 해당 배열을 찾아올 수 있을 것 같아 우선 for문을 작성했는데, 이렇게 하면 그냥 해당 값을 가져오는 것 밖에 할 수 없다..
//문제는 배열의 위치, Index값을 찾아오는 것이었다.

['Jane','Kim']

'Kim'을 찾았을 때 해당 값을 가져오는 건 할 수 있는데, 이 'Kim'의 위치 '1'을 출력하는 방법을 모르겠어 검색해보았더니 indexof 함수가 눈에 띈다.

역으로 배열을 통해 배열의 위치를 찾기 위해서는 findindex를 쓰면 될 듯 하다.

(참고한 글: 👇[열코의 프로그래밍 일기])

자바스크립트 객체 배열에서 indexOf 사용방법

//출처 블로그에서 나온 예시 코드(정리): 

//일반적인 변수가 나열된 경우, 
var arr = [ "사과", "딸기", "복숭아 ];

//1. 인덱스를 통해> 배열의 값을 구할 때는
console.log(arr[0]); // "사과" 출력

//2. 반대로 배열의 값을 통해> 몇 번째 인덱스인지 구할 때는
console.log(arr.indexOf("복숭아")); // 2 출력

그렇다면, 'Kim'의 인덱스를 알기 위해선

console.log(arr.indexof('Kim'));//1 출력

에러가 뜬다..

VM1452:1 Uncaught TypeError: seoul.indexof is not a function
at :1:19

(arr> seoul로 바꿨어야 하는 걸 나중에 알았다)

//내가 쓴 코드
var seoul =['Jane','Kim']

function checkseoul(name){
    return name==='Kim';
}

function find(){
    seoul.findIndex(name);
    
}

자바스크립트 indexOf, findIndex 차이

//출처 블로그에서 나온 예시 코드:
const superheroes = ['아이언맨', '캡틴 아메리카', '토르', '닥터 스트레인지'];

const index = superheroes.indexOf('토르');
console.log(index);
//이를 적용해 내가 쓴 코드:
const seoul = ['Jane','Kim'];

const index = seoul.indexOf('Kim');
console.log(index);

드디어 제대로 나온다!

이제, 문자열과 함께 해당 위치를 출력할 수 있도록 만들어야 한다.

'김서방은' ' ' '에 있다'를 어떻게 할까... 다시 검색!

[자바스크립트 기초] 프롬프트로 문자열을 입력받아 문장 변경하기

//위 블로그 내용을 적용해 내가 쓴 코드:

const seoul = ['Jane','Kim'];

const index = seoul.indexOf('Kim');

console.log('김서방은'+index+'에 있다');

제대로 결과물이 나온다!

이제 완성해보자.

function solution(seoul) {
		const index = seoul.indexOf('Kim');
    var answer = '김서방은'+' ' +index+ '에 있다';
    return answer;
}

코딩 테스트 플랫폼에 그대로 업로드 했더니..

샘플 테스트 케이스를 통과했다는데, 테스트 케이스에는 포함되지만 정답은 아닐 수 있다고 한다. 다른 사람들의 풀이를 보면서 참고하는게 좋을 것 같다.

나와 같은 풀이도 많았는데, 신기하기도 하고 for문으로 푸신 분들이 감탄한 댓글을 보면서, 정답 찾아보고 싶은 걸 참아가면서 도전한 첫번째 코딩테스트 문제풀이였는데, 누군가에게는 신선하게 다가온 풀이일 수도 있다는게 신기했다.

처음 생각했던 것처럼 for문을 활용한 다른 풀이는 다음과 같았다.

profile
Why?에서 시작해 How를 찾는 과정을 좋아합니다. 그 고민과 성장의 과정을 꾸준히 기록하고자 합니다.

0개의 댓글