<오늘의 문제>
- 문자열 내 p와 y의 개수
- 음양 더하기
- 문자열 내 마음대로 정렬하기
1. 문자열 내 p와 y의 개수
function solution(s){
var answer = true;
s = s.toUpperCase();
var num = 0;
for (var i=0; i<s.length; i++) {
if (s[i] === 'P'){
num++;
}
if (s[i] === 'Y') {
num--;
}
}
if (num === 0){
answer = true;
}else {
answer = false;
}
return answer;
}
- 소문자 대문자는 상관없이 따진 다고해서 대문자로 통일했다.
2. 음양 더하기
function solution(absolutes, signs) {
var answer = 0;
for (var i = 0; i<absolutes.length; i++){
if(signs[i] === true){
answer += absolutes[i];
}else if (signs[i] === false) {
answer += (-1) * absolutes[i];
}
}
return answer;
}
answer += (-1) * absolutes[i];
answer = answer - absolutes[i];
- 이렇게 나타내도 같은 값을 갖는다는게 지금도 이해가안간다..ㅎㅎ...ㅎ
사실 위의 식도 조금 더 생각해보려고하면 이해안가는건 매한가지다..
function solution(absolutes, signs) {
let answer = 0;
for (let i = 0; i < absolutes.length; i++) {
signs[i] ? answer += absolutes[i] : answer -= absolutes[i]
}
return answer;
}
- 깔끔한 삼항연산자 풀이... ㅠㅠ 남의 풀이 ㅠㅠㅠ true, false 값을 구하는거라 사실 생각해볼수도 있는거였는데..식을 구성하는거 자체가 아직 내겐 너무 어색하고 낯설다..어렵다
3. 문자열 내 마음대로 정렬하기
- 오늘의 하이라이트였고, 이해가 안되서 2시간은 넘게 헤맸고.. 지금도 마찬가지
_!~!~!~!@~!@~!@_
function solution(strings, n) {
var answer = [];
for (var i = 0 ; i < strings.length ; i++) {
strings[i] = strings[i][n] + strings[i];
}
strings.sort();
for (var j = 0; j < strings.length ; j++) {
strings[j] = strings[j].replace(strings[j][0],"");
answer.push(strings[j])
}
return answer;
}
- 대충의 맥락은 이해를 했지만 후련한 이해는 불가능했다..
이유는 다른 사람들의 sort() 활용 풀이를 봤기때문인데.....
function solution(strings, n) {
strings.sort((a,b)=>{
if(a[n] > b[n]) return 1;
if(b[n] > a[n]) return -1;
if(a > b) return 1;
if(b > a) return -1;
return 0;
});
return strings;
}
- 도저히 내 머리로는 1, -1의 저 구조를 이해를 못하겠다..
sort() 부분만 미친듯이 구글링하고 gpt의 도움도 받았는데 결국 이해하지 못했다.. a는 과거값 b는 현재값... 각 문자열도 유니코드 값으로 구분되어 차순을 정할수 있는 것.. 1(양수)일땐 뒤로가고,, -1(음수)일땐 그대로 두는걸로 알고있었는데 위와 같은 코드에서는 오히려 차순을 위해(뒤로 보내기위해) -1도 이용을 했다는 결말에 닿았지만 이해는 안간다..
function solution(strings, n) {
strings.sort((a,b)=>{
return (a[n] > b[n]) ? 1 : -1;
return (a[n] > b[n]) ? -1 : 1;
return (a > b) ? 1 : -1;
return (a > b) ? -1 : 1;
return 0;
});
return strings;
}
- 자체를 받아드리면 된다..
이전값이 현재값보다 크면 1이 올때 오름차순 !
이전값이 현재값보다 작으면 -1이 올때 내림차순 !