코딩 기초 트레이닝
문제내용
문자 “A”와 “B”로 이루어진 문자열 myString과 pat이 주어짐.
myString의 “A”를 “B”로, “B”를 “A”로 바꾼 문자열의 연속하는 부분 문자열 중 pat이 있으면 1을 아니면 0을
return하는 solution 함수를 완성해야 한다.
제출한 답
1 | |
🚩나의 생각
myString에 들어오는 값을 배열로 만든 다음 배열을 돌면서 A는 B로 B는 A로 치환한 후에
다시 문자열로 합치고 pat의 값이 있는지 찾는 방법으로 접근함.
map이 배열로 값을 반환을 하기때문에 map을 사용할 수 있을것같았는데, 아직까지는 정확하게 사용법을 모르겠어서
forEach문을 사용해 answer에 concat을 해서 배열로 만들어 줬다.
풀이 보완
보완 1.
역시나 ‘다른 사람의 풀이’를 보면 미친놈이 여럿있다. 이 중에 내가 사용하고 싶었던 map으로 푼 코드 발견
1 | |
원리를 설명하자면,
문자열을 배열로 만드는 여러가지 방법 중 하나인 스프레드 연산자를 사용한 것이다.
[…myString]으로 만든 배열에 map을 사용하여 똑같이 배열을 반환한 후 바로 join하여 비교하는 원리이다.
팀 개발자들의 생각
👩💻 쉰님 :
0을 변수에 담아놓고 myString도 배열로 변경해서 담아놓은 다음 비교를 하는데 한글자씩 잘라서 pat과 맞는지 비교하고 맞으면 1을 return, 틀리면 변수로 담아둔 0을 return 했더니 70%만 정답이다.
👨💻 탠님 :
myString에 들어오는 값에서 A를 B로 바로 바꾸면 B를 A로 바꿀 때 섞이기 때문에 A를 C로 바꾸고 B를 A로 바꾼 다음 C를 B로 바꿨다.
태인님의 코드를 JavaScript로 변환해서 간략하게 설명하자면
1 | |
이런느낌이였다.
수인님의 70% 정답인 이유는 아마 하나씩 자르면서 비교하기 때문에 문자열의 시작점과 끝점이 아닌,
중간에 껴있거나 하는 값들을 제대로 못찾는 것 같아서 JavaScript의 includes와 비슷한 역할을 하는
java의 contains를 사용했더니 100% 정답이 되었다.
평가
문제만 무작정 풀 것이 아니라 자바스크립트의 메서드들을 열심히 공부하고, 알고리즘적인 사고 방식을 가져야겠다.