일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 프로그래머스
- 개발공부
- 코드스테이츠
- RN 프로젝트
- 부트캠프
- 자바스크립트 sort()
- [파이썬 실습] 기초 문제
- 삼항연산자
- 엘리스 AI 트랙 5기
- 자바스크립트 날씨
- 프론트개발
- 자바스크립트
- 자바스크립트 split()
- 자바스크립트 reduce()
- JavaScript
- 프론트개발공부
- [파이썬 실습] 중급 문제
- 자바스크립트 날씨 웹 만들기
- 엘리스
- leetcode
- 리트코드
- HTML
- 엘리스 ai 트랙
- 개발일기
- [파이썬 실습] 심화 문제
- [AI 5기] 연습 문제집
- 날씨 웹 만들기
- 간단한 날씨 웹 만들기
- 코딩부트캠프
- reactnativecli
- Today
- Total
개발조각
[알고리즘 풀이_Lv0] 한 번만 등장한 문자, 잘라서 배열로 저장하기, 진료순서 정하기, 영어가 싫어요 본문
[알고리즘 풀이_Lv0] 한 번만 등장한 문자, 잘라서 배열로 저장하기, 진료순서 정하기, 영어가 싫어요
개발조각 2023. 3. 15. 15:50*제주코딩베이스캠프의 JavaScript 알고리즘 100일 챌린지를 참고로 정리하고 있습니다.*
한 번만 등장한 문자_24번째
문제
https://school.programmers.co.kr/learn/courses/30/lessons/120896
코딩테스트 연습 - 한 번만 등장한 문자
문자열 s가 매개변수로 주어집니다. s에서 한 번만 등장하는 문자를 사전 순으로 정렬한 문자열을 return 하도록 solution 함수를 완성해보세요. 한 번만 등장하는 문자가 없을 경우 빈 문자열을 retur
school.programmers.co.kr
문자열 s가 매개변수로 주어집니다.
s에서 한 번만 등장하는 문자를 사전 순으로 정렬한 문자열을 return 하도록 solution 함수를 완성해보세요.
한 번만 등장하는 문자가 없을 경우 빈 문자열을 return 합니다.
해결방안
문자열을 배열로 만드는 방법
s = "abcabcadc"
// 방법1_spread Operator
[...s] // ["a","b","c","a","b","c","a","d","c"]
// 방법2_split
s.split(''); // ["a","b","c","a","b","c","a","d","c"]
해당 문자가 문자열에서 1번 등장하는지 확인하는 방법
방법 1_split
// 등장하는 문자열이 1번인 문자를 넣어주면 배열길이가 2이다.
s.split('d') // s='abcabcadc', ["abcabca","c"]
// 문자열 마지막자리에 위치해도 배열길이가 2가 된다.
s.split('c') // s='abdc', ["abd",""]
// 해당 문자가 문자열에서 1번 등장하는지 확인
[...s].filter(c => s.split(c).length === 2)
// 1번 등장한 문자를 정렬해주고 문자열로 만들기
return [...s].filter(c => s.split(c).length === 2).sort().join('');
방법2_정규식, match
// s = 'abcabcadc'
s.match(/a/g); // ["a","a","a"]
return s.match(/d/g); // ["d"]
그러나 변수는 정규식에 바로 넣을 수 없다.
그래서 new RegExp()를 사용해서 넣어줘야 된다.
return [...s].filter(c => s.match(new RegExp(c, 'g')).length === 1).sort().join('');
소스코드
// 방법1_split
function solution(s) {
return [...s].filter(c => s.split(c).length === 2).sort().join('');
}
// 방법2_정규식, match
function solution(s) {
return [...s].filter(c => s.match(new RegExp(c, 'g')).length === 1).sort().join('');
}
잘라서 배열로 저장하기_25번째
문제
https://school.programmers.co.kr/learn/courses/30/lessons/120913
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문자열 my_str과 n이 매개변수로 주어질 때,
my_str을 길이 n씩 잘라서 저장한 배열을 return하도록 solution 함수를 완성해주세요.
해결방안
방법1_정규식
// s = 'abc1Addfggg4556b'
// . -> 모든 문자열 포함
// {} -> 문자열 길이 제한
my_str.match(new RegExp(`.{1,6}`, 'g')) // ["abc1Ad","dfggg4","556b"]
my_str.match(new RegExp(`.{5,6}`, 'g')) // ["abc1Ad","dfggg4"]
1부터 시작을 해야 안 잘리고 잘 나온다.
방법2_정규식 안 쓰기
// s = 'abcdef123'
function solution(my_str, n) {
let result = []; // 잘린 배열 담기
for(let i=0; i<my_str.length; i+=n){ // n만큼 건너뛰기
result.push(my_str.slice(i, i+n)) // i~i+n까지 문자열 자르고 result에 넣어주기
}
return result
}
// my_str.slice(0, 0+3) -> 'abc'
// my_str.slice(3, 3+3) -> 'def'
// my_str.slice(6, 6+3) -> '123'
소스코드
// 방법1_정규식
function solution(my_str, n) {
return my_str.match(new RegExp(`.{1,${n}}`, 'g'));
}
// 방법2_정규식 안 쓰기
function solution(my_str, n) {
let result = [];
for(let i=0; i<my_str.length; i+=n){
result.push(my_str.slice(i, i+n))
}
return result
}
진료순서 정하기_26번째
문제
https://school.programmers.co.kr/learn/courses/30/lessons/120835
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
외과의사 머쓱이는 응급실에 온 환자의 응급도를 기준으로 진료 순서를 정하려고 합니다.
정수 배열 emergency가 매개변수로 주어질 때
응급도가 높은 순서대로 진료 순서를 정한 배열을 return하도록 solution 함수를 완성해주세요.
해결방안
내림차순 정렬
// emergency = [3, 76, 24]
let 응급순서 = emergency.sort((a,b)=> b-a) // [76,24,3]
// emergency = [3, 76, 24]
function solution(emergency) {
let 응급순서 = emergency.sort((a,b)=> b-a) // [76,24,3]
return emergency.map(v => 응급순서.indexOf(v)); // [0,1,2]
}
이렇게 쓰면 [3, 1, 2]이라고 나올 것 같지만 [0, 1, 2]가 나온다.
이유. emergency도 내림차순이 되어버렸기 때문에다.
emergency = [76, 24, 3]
응급순서 = [76, 24, 3]
→ [0, 1, 2]가 되어 버린다.
해결. slice를 사용하면 emergency를 변경시키지 않고 정렬된 값을 응급순서가 받을 수 있다.
function solution(emergency) {
// emergency = [3, 76, 24]
let 응급순서 = emergency.slice().sort((a,b)=> b-a) // [76,24,3]
return emergency.map(v => 응급순서.indexOf(v)); // [2,0,1]
}
// emergency.slice() -> [3, 76, 24]
slice를 써야 깊은 복사가 돼서 emergency와 다른 정렬된 값을 '응급순서'변수가 받을 수 있다.
소스코드
function solution(emergency) {
let 응급순서 = emergency.slice().sort((a,b)=> b-a);
return emergency.map(v => 응급순서.indexOf(v) + 1);
}
영어가 싫어요_27번째
문제
https://school.programmers.co.kr/learn/courses/30/lessons/120894
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
영어가 싫은 머쓱이는 영어로 표기되어있는 숫자를 수로 바꾸려고 합니다.
문자열 numbers가 매개변수로 주어질 때,
numbers를 정수로 바꿔 return 하도록 solution 함수를 완성해 주세요.
해결방안
방법1_replaceAll
replaceAll을 사용하면 쉽게 해결할 수 있다.
// numbers = 'onefourzerosixseven'
return numbers.replaceAll('one', '1'); // "1fourzerosixseven"
parseInt(numbers
.replaceAll('zero', '0')
.replaceAll('one', '1')
.replaceAll('two', '2')
.replaceAll('three', '3')
.replaceAll('four', '4')
.replaceAll('five', '5')
.replaceAll('six', '6')
.replaceAll('seven', '7')
.replaceAll('eight', '8')
.replaceAll('nine', '9'));
방법2_정규식
오브젝트에 zeor ~ nine까지 담기
const obj = {
zero: 0,
one: 1,
two: 2,
three: 3,
four: 4,
five: 5,
six: 6,
seven: 7,
eight: 8,
nine: 9,
}
return numbers.replace(/zero|one|two|three|four|five|six|seven|eight|nine/g, (v)=>{
return obj[v]
})
// "123456789"
소스코드
// 방법1_replaceAll
function solution(numbers) {
return parseInt(numbers
.replaceAll('zero', '0')
.replaceAll('one', '1')
.replaceAll('two', '2')
.replaceAll('three', '3')
.replaceAll('four', '4')
.replaceAll('five', '5')
.replaceAll('six', '6')
.replaceAll('seven', '7')
.replaceAll('eight', '8')
.replaceAll('nine', '9'));
}
// 방법2_정규식
function solution(numbers) {
const obj = {
zero: 0,
one: 1,
two: 2,
three: 3,
four: 4,
five: 5,
six: 6,
seven: 7,
eight: 8,
nine: 9,
}
return +numbers.replace(/zero|one|two|three|four|five|six|seven|eight|nine/g, (v)=>{
return obj[v]
})
}
'알고리즘🅰 > 제주코딩베이스캠프 프로그래머스 문제 풀이' 카테고리의 다른 글
[알고리즘 풀이_Lv0] 저주의 숫자3, 다항식 더하기, 안전지대, 겹치는 선분의 길이 (0) | 2023.03.20 |
---|---|
[알고리즘 풀이_Lv0] 외계어 사전, 문자열 밀기, 컨트롤 제트, 등수 매기기 (0) | 2023.03.16 |
[알고리즘 풀이_Lv0] A로 B 만들기, 팩토리얼, k의 개수, 가까운 수 (0) | 2023.03.14 |
[알고리즘 풀이_Lv0] 배열 회전시키기, 외계행성의 나이, 369게임, 중복된 문자 제거 (0) | 2023.03.13 |
[알고리즘 풀이_Lv0] 문자열 뒤집기, 특정 문자 제거하기, 배열의 유사도, 가위 바위 보 (0) | 2023.03.10 |