일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- javascript
- git-hub
- 프로그래머스
- for문
- 배열 과정
- 대립연산자
- cs50 #
- DOM
- lv.0
- innerHTML
- sendbird-chat-ui-sample
- lambda
- 하루 12시간 공부 목표
- 비동기 프로그래밍
- classList
- chatGPT
- 화이팅
- cloudflare
- 조코딩
- 메모리
- 정규표현식
- CS50마지막 강의 4일 만에 끝냈다. # 고생했다.
- if문
- RegExp
- edwith #20230221
- cs
- Today
- Total
엘린의 개발일지
프로그래머스 Lv0. 본문
오늘 푼 문제 입니다!
주로 배열에 관한 문제, if문, for문을 쓰는 문제 push메소드를 쓰는 문제가 주로 나왔는데요
이 중 시간이 가장 오래 걸렸던 것은 모스부호 입니다..
모스부호는 split이라는 라이브러리를 쓰면 쉽게 해결되지만 코딩의 기초부터 하기위해서 저는
for문과 if문을 활용해서
const morse = {
'.-':'a',
'-...':'b',
'-.-.':'c',
'-..':'d',
'.':'e',
'..-.':'f',
'--.':'g',
'....':'h',
'..':'i',
'.---':'j',
'-.-':'k',
'.-..':'l',
'--':'m',
'-.':'n',
'---':'o',
'.--.':'p',
'--.-':'q',
'.-.':'r',
'...':'s',
'-':'t',
'..-':'u',
'...-':'v',
'.--':'w',
'-..-':'x',
'-.--':'y',
'--..':'z'
};
function solution(letter) {
let currentMorse = '';
let answer = ''
for(let i =0;letter.length;i++) {
const item = letter[i];
}if(item === ''){
answer += morse[currentMorse];
currentMorse = ''
}else{
currentMorse += item;
}
return answer;
}
이 식을 split메소드를 활용하면
function solution(letter) {
let answer = ''
let currentMorse = '';
const splittedLetter = letter.split(' ')
for(let i =0;splittedLetter.length;i++){
answer += morse[currentMorse];
}
return answer;
}
이렇게 간단하게 바꿀수 있습니다.
생각보다 변수명이나 구조가 이해가 되지 않아 어려웠는데요.
조금더 복습하면 조금더 쉽게 코딩할수 있을것같습니다.
구슬을 나누는 경우의 수
이 문제도 조금 난이도가 있어서 복습해 보려고 합니다.
고등학생때 배웠던 n!/(n-m)*m!식을 활용해서 문제를 풀면되는데요
n개중 m개를 뽑았을때 나오는 경우의 수를 활용한 문제 입니다.
3개중 2개를 뽑았을때 나오는 경우를 말하는데요
function solution(balls, share) {
var answer = 0;
const n = balls;
const r = share;
let one = 1;
for(let i = n; i >= n-r+1 ; i--){
one *= i;
}
let three = 1;
for(let i = r; i >= 1; i--) {
three *= i;
}
answer = Math.floor(one/three)
return answer;
}
for문을 작성할때 n-r+1구문이 나오는데 이는 첫번째 구슬을 뽑았을때
공의 갯수-나누는 횟수 +1입니다.
그리고 세번째 구슬을 뽑을때는 마지막이기 때문에 첫번재와 마지막 경우의 수만 구하면 되기 때문에
r이 마지막 나누는 횟수겠죠.
그러면 r은 1이 됩니다.
그리고 나서 answer에 one을 three로 나누면 정수가 아닌값이 나오기 때문에
Math.floor 메소드를 이용해서 정수로 나오게 해줍니다.
이렇게 두문제를 리뷰해보았고 다음에 또 복습을 해야할것같습니다.
좋은 하루 되세요!
'개인 프로젝트' 카테고리의 다른 글
프로그래머스 풀이 <OX퀴즈> (0) | 2023.04.28 |
---|---|
ChatGpt api로 운세 보는 챗도지 만들기 (0) | 2023.03.29 |
개인 프로젝트 진행 중 느낀점 (0) | 2023.03.20 |