반복문 코플렛 문제를 풀면서 어려웠던 부분들이 정말 많았던 것 같다.
사실 지금도 보면서도 아직 이해가 안가는 부분들도 있다....
✍️ countCharacter
문자열과 문자를 입력받아 문자열에서 문자(letter)가 등장하는 횟수를 리턴해야 합니다.
내가 쓴 코드
function countCharacter(str, letter) {
let result=0
for(let i=0; i < str.length; i++){
if(str[i]===letter){
result= result+1
}
}return result
}
풀이
ex)
// countCharacter('abca','a')
//1. str[0]=a
//2. str[1]=b
//3. str[2]=c
//4. str[3]=a
//총 갯수 2개
//str[i]가 letter과 같을 때 1씩 더해주면 된다.
✍️ getMaxNumberFromString
숫자 문자열을 입력받아 문자열을 구성하는 각 숫자 중 가장 큰 수를 나타내는 숫자를 리턴해야 합니다.
내가 쓴 코드
풀이
1. str.length의 값이 0과 같을때 0을 반환한다.
2. 0번째 인덱스를 첫번째로 선언
3.반복문에서 0번째부터 str의 길이까지 계산을 해준다.
4.Number(str[i])가 first보다 크면 first에 넣어준다.
래퍼런스 코드
✍️ isPrime
1 이상의 자연수를 입력받아 소수(prime number)인지 여부를 리턴해야 한다
- 출력 : boolean 타입을 리턴한다.
- 힌트 :
자바스크립트 내장 객체인 Math를 활용해 불필요한 연산을 줄일 수 있다. (javascript square root 또는 자바스크립트 제곱근)
내가 쓴 코드
풀이
// 소수인지 여부를 판단하기위한 조건 세가지를 세워야 한다.
1. num =1이면 false다
2. num =2면 true다.
3. 2를 제외한 2의배수들은 false다.
// 세가지 조건문을 세우고 for문을 작성하면 된다.
//for문은 i=3부터 시작을 하며 2씩 증가를 한다. 홀수만 입력받으면 되기 때문에
// num을 i로 나눴을때 나머지가 0이면 false, 아니면 true로 반환하면 된다.
✍️ listPrimes
2 이상의 자연수를 입력받아 2부터 해당 수까지의 소수(prime number)들을 리턴해야 합니다.
- 출력 :
string 타입을 리턴한다.
2-3-5-7의 형식으로 리턴해야 한다. - 주의사항 :
이중 반복문(double for loop)을 사용해야 한다.
래퍼런스 코드
풀이
1.변수 result에 문자열 2를 할당해 준다. 2부터 출력 되야 하기 때문이다.
2. 변수 candi에 3을 할당해 준다. candi는 2씩 증가한다. 홀수가 소수의 조건이기 때문이다.
3. candi는 num과 같거나 작을 때까지 진행한다. 왜냐하면 num까지 소수를 찾아야 하기때문에 candi가 홀수로 진행하면서 하나하나 소수인지 검사해야 한다. 첫번째 반복문 안에서 isPrime을 선언하고 true값을 할당해 준다. 첫번째 반복문이 돌때마다 매번 소수라고 재정의를 해준다.
4. sqrt 변수를 선언하고 candi의 값을 제곱근으로 바꾸고 소수점을 잘라서 넣어준다. 첫번째 sqrt 값은 3이므로 제곱근은 1이 된다.
5. 두번째 반복문이 실행되고 divider에 3을 할당해 준다. divider는 sqrt보다 작거나 같을때를 조건으로 실행된다. divider는 2씩 증가한다.
6. sqrt가 3일 때부터 두번째 반복문이 실행 되게 되는데 제곱근 3은 9이다. candi값이 9일때 두번째 반복문이 실행 된다.
7. 3,5,7은 isPrime이 true 이므로 출력 되게 된다.
8. 두번째 반복문이 실행 되면 조건문을 만나게 된다. candi를 divider로 나눠서 0으로 떨어지면 isPrime은 false가 된다.
9. candi가 9이고 divider는 3이므로 0으로 떨어진다. isPrime 값은 false가 되고
9. break문을 만나서 두번째 반복문을 빠져 나온다. 조건문 isPrime을 확인을 하고 result에 담기지 않고 첫번째 반복문으로 가서 반복문이 계속 실행된다.
10. 반복문을 나와서 결과를 리턴하면 올바른 결과가 출력 된다.
✍️ hasRepeatedCharacter
문자열을 입력받아 해당 문자열에 중복된 문자(letter)가 존재하는지 여부를 리턴해야 한다
내가 쓴 코드
풀이
//두번째 반복문: 1번째 인덱스부터 문자 끝까지 읽는다.
//조건문: 만약 str[i]와 str[n]가 같으면 중복되는 문자가 있다는 뜻으로 true를 리턴한다.
1. str[i]가 0번째 인덱스 일때 str[n]과 비교를 하는데 str[n]은 전체 문자열을 본다.
2.0번째 인덱스가 끝나면 str[i]는 1번째 인덱스로 바뀐다.
3. 계속 반복되면서 중복되는 문자가 있는지 찾아내 불리언값을 리턴한다.
'코드스테이츠' 카테고리의 다른 글
[2주차] 💻🏃♂️ - Linux/Git 기초 (짝수생성기) (0) | 2023.02.24 |
---|---|
[2주차] 💻🏃♂️ - 계산기 구현하기 (0) | 2023.02.23 |
[2주차] 💻🏃♂️ - 조건문 코플렛 풀이 (0) | 2023.02.22 |
[2주차] 💻🏃♂️ - 조건문, 반복문 (0) | 2023.02.21 |
[1주차] 💻🏃♂️ - 계산기 목업 (0) | 2023.02.17 |