일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- 국비지원취업
- 프론트엔드개발자
- js코테
- 패캠부트캠프
- 개발블로그
- 프론트엔드
- 프론트엔드부트캠프
- 패스트캠퍼스부트캠프
- Java
- FE
- 부트캠프
- 국비지원
- 패캠
- 패스트캠퍼스
- 미니 프로젝트
- 프로그래머스 JS 코테
- 깃
- 프로그래머스
- 개인프로젝트
- JS
- 자바스크립트
- 개발 프로젝트
- 코딩테스트
- 깃허브
- 딥러닝
- 영상처리
- 자바스크립트 코딩테스트
- pokeapi
- 프로그래머스코테
- 프로젝트
- Today
- Total
가쟤의 해변일기 🐳
프로그래머스 JS 코테 | 문자열 정수의 합, 이상한 문자 만들기 본문
이번엔 그룹 코테 스터디에서 풀어오기로 한 문제다.
0단계 문제는 수월하게 풀었지만.. 1단계 문제를 정말 오래..^^ 붙잡고 있었다....
Lv.0 [그룹 스터디] 문자열 정수의 합
https://school.programmers.co.kr/learn/courses/30/lessons/181849?language=javascript
일단 reduce 메서드로 더하는게 생각이 났다.
이제 문자열로 주어진 num_str을 split해서 숫자열로 바꾸고 reduce를 해줘야 할 것 같다.
function solution(num) {
return num.split("")
}
.split() 메서드를 문자열에 쓰면 배열 안에 각 문자열이 들어간다.
→ 이제 숫자로 바꿔주자.
parseInt(num).split("")
이건 안되더라ㅏ.. 숫자라서..
num.split("").map(Number) 이렇게 하면 숫자로 이뤄진 배열로 만들 수 있다.
성공 !
function solution(num) {
return num.split("").map(Number).reduce((a,b) => a + b, 0)
}
다른 사람 풀이
num_str.split("").map((a)=>answer+=Number(a))
reduce를 안 쓰고서 map에서도 더할 수 있듬…
function solution(num_str) {
return [...num_str].reduce((a, c) => a + +c, 0)
}
무친…ㅋ…+로 문자를 숫자로 바꿨다….전개 연산자를 사용하다니..
Lv.1 [그룹 스터디] 이상한 문자 만들기
문자열이니까 길이를 구해서 2로 나눈 나머지가 0이면 짝수, 아니면 홀수로 구하고 if문 혹은 삼항 연산자로 구해보려고 한다.
아니.. 그걸 구하는게 아니고 s의 인덱스 번호가 짝수/홀수면 ? 으로 해야한다.
s[i] 일 경우 i % 2 === 0 이거로 if문 돌리기
s의 인덱스 번호는 for문으로 돌려야 해서 for문 안에 if문이 있을 것 같다.
다른 메서드 활용은 당장 생각나지 않으니 일단 for문으로 구현해보고 다른 메서드를 생각해봐야겠다.
근데 대문자로 만드는게 있었나…?
npm 패키지에_ lodash로 했었던 것 같은데..
쳐보니까 toUpperCase() 메서드가 있다고 한다.
function solution(s) {
for (let i = 0; i <= s.length; i++) {
if(i % 2 === 0) {
// 문자열에 push
} else {
// 대문자로 변환 후 push
}
}
return //push한 변수 문자열로 변환
}
일단 이런 로직
function solution(s) {
arr = []
for (let i = 0; i <= s.length; i++) {
if(i % 2 === 0) {
arr.push(s[i].toUpperCase())
} else {
arr.push(s[i])
}
}
return arr.join("")
}
이렇게 테스트 케이스는 통과했으나…
제한 사항에 보면 문자열 전체의 짝/홀수 인덱스가 아닌 공백을 기준으로 단어별로 인덱스를 판단 해야 한다고 한다.
테스트 케이스는 단어가 다 홀수여서 통과를 했지만 내 코드를 수정해보자.
매개변수로 주어지는 s를 공백을 기준으로 split해서 .. 돌릴까… 하는데…
words = s.split(" ")
이렇게 만…들어줬긴 한데 이걸 배열에 넣어서 … 돌릴까?함.
i를 활용할 수 있을 것 같음..!
function solution(s) {
words = s.split(" ")
arr = []
for (let i = 0; i <= s.length; i++) {
if(i % 2 === 0) {
arr.push(words[i][i].toUpperCase())
} else {
arr.push(words[i][i])
}
}
return arr
}
네,, 아쉽게도 날로 먹기 실패
에러가 납니다…^^
이중 for문 쓰기 싫은데……………..
어차피 다 순회해야하니까 map을 써보죠 (아니 쓸 수 있긴 한데…
아 … 내 실수 알아냄.
if문 조건을 i % 2 === 0 으로 잡아벌임..!! 그래서…ㅋㅋ..
반복문 두 번 쓰는게 맞나봄……………..일단 다 뜯어 고쳐보자..
function solution(s) {
words = s.split(" ")
arr = []
for (let i = 0; i < words.length; i++) {
let word = words[i]
for(let j = 0; j < word.length; j++) {
if(j % 2 === 0) {
arr.push(word[j].toUpperCase())
} else {
arr.push(word[j])
}
}
}
return arr
}
대충 for문 두 번 돌리는데 성공했고, if문으로 j가 짝수/홀수인지 확인해서 조건 달았다.
이제 단어별로 띄어쓰기 중간에 추가해주면 된다……
문제 되게 간단해보이는데 구현 왤케 어렵냐..???
if(j + 1 === word.length) arr.push(" ")
와… 미쳣다 ^^
근데 마지막에도 들어가서 마지막 word면 push하지 않게 &&로 해야겠다.
해보려고 열심히 고민했는데 그냥 쉽게 pop()하면 될 듯??
function solution(s) {
words = s.split(" ")
arr = []
for (let i = 0; i < words.length; i++) {
let word = words[i]
for(let j = 0; j < word.length; j++) {
if(j % 2 === 0) {
arr.push(word[j].toUpperCase())
} else {
arr.push(word[j])
}
if(j + 1 === word.length) arr.push(" ")
}
}
arr.pop()
return arr.join("")
}
않이 웨?????????????? 웨않되..?/??
하 ㅋㅋㅋ하ㅣ
하헣ㅎㅋㅋ
테스트 케이스는 통과했는데…. 나빠….
일단 내가 직접 테스트 케이스를 추가해야 할 것 같다.
???
머가 문젠데요
발악
function solution(s) {
words = s.split(" ")
arr = []
for (let i = 0; i < words.length; i++) {
let word = []
word.push(words[i])
word.map((w, index) => {
(w[index] % 2 === 0)
? arr.push(word[index].toUpperCase())
: arr.push(word[index])
if (index + 1 === word.length) arr.push(" ")
})
}
arr.pop()
return arr.join("")
}
뭔가를 시도했지만 개같이 실패
최종 성공
다시 원점으로 돌아옴.
function solution(s) {
words = s.split(" ")
answer = []
for (let i = 0; i < words.length; i++) {
for(let j = 0; j < words[i].length; j++) {
if(j % 2 === 0) {
answer += words[i][j].toUpperCase()
} else {
answer += words[i][j].toLowerCase()
}
}
if(i + 1 < words.length) answer += " "
}
return answer
}
이…. toLowerCase가 중요했나보다…. 잠만요…
그리고 띄어쓰기도 문제가 있었나보다….
'코딩 테스트 in JS' 카테고리의 다른 글
프로그래머스 JS 코테 | 나누어 떨어지는 숫자 배열, 두 정수 사이의 합, 부족한 금액 계산하기 | 가우스 공식 (0) | 2023.09.28 |
---|---|
프로그래머스 JS 코테 | 콜라츠 추측, 하샤드 수 (0) | 2023.09.04 |
프로그래머스 JS 코딩테스트 | 숫자 문자열과 영단어 (0) | 2023.08.30 |
프로그래머스 JS 코테 | 같은 숫자는 싫어, 폰켓몬 (0) | 2023.08.29 |
프로그래머스 JS 코테 | 서울에서 김서방 찾기, 음양 더하기 (1) | 2023.08.28 |