5일차

조금만 더 생각해보는 사람이 되기.
5일차는 생각보다 어려웠다. 같은 레벨의 문제라고 할 지라도 성공률이 조금씩 다르다. 나는 성공률이 높은 순서대로 풀고 있는데 절반쯤 왔을 때 약간의 어려움을 느꼈다
3일차, 4일차는 문법을 인지하고 어떤 메서드를 활용해서 문제를 풀면 되겠다가 가능했다. 그러나 5일차는 생각보다 그게 잘 안됐다. 나의 부족함인 응용 능력이 부족해서 그렇지 않나 싶다. 그렇기에 확실하게 공부했던 내용들을 되짚어 보려 한다.
문법
map()
map() 메서드는 배열의 모든 요소에 대해 새로운 배열을 만드는 메서드이다. map()을 사용하면 따로 for문이나 if문을 사용하지 않더라도 배열을 쉽게 만들 수 있다.
그렇기 때문에 이번 프로그래머스로 코딩 문제를 공부하면서 map()을 최대한 자주 사용하도록 했다. 처음에는 이해하기 어려웠지만, 계속해서 도전해보니까 이해를 할 수 있었고 코드 줄이 확 줄어들었다.
예시
const numbers = [1, 2, 3, 4, 5];
const squaredNumbers = numbers.map((num) => {
return num * 2;
});
console.log(squaredNumbers);
오늘의 문제
가위 바위 보
가위바위보는 누구나 아는 게임이다. 이기기 위해서 무엇을 해야 하는지 정확하게 알고 있지만, 이를 코딩으로 어떻게 구현하느냐는 생각보다 머리가 돌아가야 한다. 문제를 읽고 한 번 접근방법과 풀이를 해보려 한다.
문제
가위는 2 바위는 0 보는 5로 표현합니다. 가위 바위 보를 내는 순서대로 나타낸 문자열 rsp가 매개변수로 주어질 때, rsp에 저장된 가위 바위 보를 모두 이기는 경우를 순서대로 나타낸 문자열을 return하도록 solution 함수를 완성해보세요.
풀이 예시
rsp| result
"2"| "0"
"205"| "052"
문자열을 반환하는 문제다. 모두 이기는 경우를 문자열로 반환하면 되는데 이를 풀기 위해서 우선 접근방법에 대해 생각해야 한다.
접근방법
우선 문자열을 파악해야 한다. 그리고 문자열에 따른 이기는 경우를 정의하고 이를 문자열로 반환해야 한다. 코딩으로 풀면 다음과 같다.
풀이
function solution(rsp) {
var answer = '';
answer = rsp.split('').map(x => {
if(x === '0') {
return '5';
} else if(x === '5') {
return '2';
} else {
return '0';
}
}).join('');
return answer;
}
나는 우선 받은 문자열을 배열에 문자 하나씩 넣었다. 그 후 map() 메서드를 이용하여 이기는 경우의 배열을 만들었다. 이렇게 만든 이기는 경우의 배열을 만들고 마지막으로 join() 메서드로 하나의 문자열을 만들었다.
정리하기
접근만 잘하면 된다.💦
물론 접근하는 게 가장 어렵다. 하지만 접근만 잘하면 나머지는 쉽게 풀 수 있다. 그렇게 접근을 잘 하기 위해서는 조금만 더 생각을 할 필요가 있다. 무조건 손이 가는대로 푼다면 좋겠지만, 그건 천재들이다. 나는 천재가 아니기 때문에 조금만 더 생각하고 문제를 풀기 위해 어떤 것들이 필요할까라는 접근을 우선적으로 해야겠다.