세번째 데이트하면 왠만하면 각 나오지 않나??
여기서 그만 둘지 삼귈지 사귈지.. 오잉 여러분도 이번에 한번 정해보세요
그럼 렛츠기릿 ~~~
수(num)를 입력받아 1을 포함하여 num개의 홀수로 구성된 문자열을 리턴해야 합니다.
주의 사항
반복문(while)문을 사용해야 합니다.
숫자(number string) 사이의 구분은 없습니다. ('13579')
function makeOddDigits(num) {
// TODO: 여기에 코드를 작성합니다.
// 결과값 나타낼 변수 선언 하고 빈문자열 할당
let result = '';
// 반복문 시작 1부터 갯수는 입력된 숫자 만큼
let i = 1
while (i <= num){
if (i%2 !== 0){
result = result + String(i);
}
i++
} return result;
}
// 이렇게 되면 입력된 수까지만 된다. ㅇㅋ? 입력된 수가 갯수가 아니다.
입력된 수가 갯수로 바꿔줘야하는 아주 좋은 문제 이다.
이 개념을 잘 알고 있어야 한다.
입력된것을 반복하는 횟수에만 이용해야한다. ㅇㅋ?
정답 코드 ~~ 쏜다
function makeOddDigits(num) {
// TODO: 여기에 코드를 작성합니다.
let result = '1'; // 정답으로 들어갈 변수 result 선언 하고 문자열 1 할당
let i = 1; // 반복문 초기 값
let n = 1; // 결과값으로 넣을 변수
while(i<=num-1){ // 반복문은 i가 입력된 수보다 1작은 수까지만 반복 후 아웃
n+=2; // 결과값에 2씩 더해준다. (ex. 1+3+5)
result=result+String(n);
i++
}
return result;
}
살짝 꼬인문제인데. 응용력이 폭팔해야함
i 뿐만 아니라 다른 변수도 활용 해야한다. 자유자재로
수를 입력받아 1부터 해당 수까지의 수 중에서 3의 배수로만 구성된 문자열을 리턴해야 합니다.
주의 사항
반복문(for)문을 사용해야 합니다.
숫자(number string) 사이의 구분은 없습니다. ('3691215')
3의 배수가 없을 경우, 빈 문자열을 리턴해야 합니다.
function makeMultiplesOfDigit(num) {
// TODO: 여기에 코드를 작성합니다.
let result = '';
for (let i=1; i<=num; i++){
if(i%3 === 0){
result = result + String(i);
}
}return result;
}
간단하게 3의 배수가 나올때만 결과값에 더해주세요 ~~
계속 i를 1씩 더하는 방법만 사용했는데(사실 대중적임) 하지만 i++틀에서 벗어나보겠다.
function makeMultiplesOfDigit(num) {
// TODO: 여기에 코드를 작성합니다.
let result = '';
for (let i=3; i<=num; i+=3){
result = result + String(i);
}return result;
}
처음부터 3으로 시작해서 아예 3씩 더해주겠다.. 이러면 조건문도 안쓴다 오예
두 개의 수를 입력받아 두 수를 포함해 두 수 사이의 수 중 2의 배수의 개수를 리턴해야 합니다.
주의 사항
반복문(for)문을 사용해야 합니다.
num1이 num2보다 작지 않을 수도 있습니다.
0은 2의 배수가 아니라고 가정합니다.
첫번째 문제 풀이.
포인트는 조건문 + 반복문 + 조건문 + 조건문 넣기
(완전 변태스러운 코딩임 ㅋㅋㅋㅋㅋㅋ재미있당 ㅋㅋㅋ)
안될줄 알았는데..잘된다. ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ흐흐 짜는데 30분 넘게 걸림
중간에 continue가 들어간다 만약 i가 0일경우는 제외하고 반복해주삼 ㅋㅋㅋㅋ 이라는 뜻이다. ㅋㅋㅋ
이래서 정말 꾸역꾸역 코딩 짠 느낌이다. ㅋㅋㅋ(예시를 만들력고 얼마나 노력중인지.. 다들 별풍좀 쏴줘.. )
해석은 주석으로 넣어놓겠다.
function makeMultiplesOfDigit2(num1, num2) {
// TODO: 여기에 코드를 작성합니다.
if (num1 ===0 && num2 === 0){ // 입력된 두수가 모두 0일 경우를 엣지케이스로 제거
return 0;
}
let result = 0; // 결과값 리턴할 변수 선언
if(num1<num2){ // num1<num2 경우
for (let i=num1; i<=num2; i++){
if (i%2 === 0){ // 2로 나눴을때 나머지가 0인경우만 나타내주세요.
if(i === 0) continue; // 0인경우는 제외해주세요.
result++ // result = result + 1 이라는 뜻이다.
}
} return result;
}
else if (num1 > num2){ // 반대인 경우 나타냈다.
for (let j=num2; j<=num1; j++){
if (j%2 === 0){
if(j === 0) continue;
result++
}
} return result;
} else return 1; // 이 외 조건은 1로 리턴하겠다.
}
두번째 문제 풀이
(좀 코더스럽게 짜겠다.)
function makeMultiplesOfDigit2(num1, num2) {
// TODO: 여기에 코드를 작성합니다.
let count = 0;
let start = num1;
let end = num2;
if (num1 > num2){
start = num2;
end = num1;
}
for(let i = start; i <= end; i++){
if(i%2 === 0){
count = count + 1;
}
}return count;
}
// 0을 제외 시키는 방법이 뭐가 있을까. 이렇게 입력하면 0이 포함되어 있을때 자꾸 횟수에 더해진다.
function makeMultiplesOfDigit2(num1, num2) {
// TODO: 여기에 코드를 작성합니다.
let count = 0; // 결과값을 나타낼 변수선언
let start = num1; // 직관적으로 알아보기 위해 시작점
let end = num2; // 끝나는 수 변수로 선언
if (num1 > num2){ // 만약 num1 > num2 크면 위치 바꾸는 스킬
start = num2;
end = num1;
}
if (start === 0){ // 만약에 0이면 ...1부터 시작하자
start = 1;
}
for (let i = start; i <= end; i++){
if (i%2 === 0){
count++;
}
} return count;
}
문자열과 문자를 입력받아 문자열에서 문자(letter)가 등장하는 횟수를 리턴해야 합니다.
function countCharacter(str, letter) {
// TODO: 여기에 코드를 작성합니다.
let count = 0;
for(let i=0; i<=str.length; i++){
if(str[i] === letter){
count++
}
}return count;
}
형들 이건 살짝 쉽다 그치?
설명 생략할께.~~
숫자 문자열을 입력받아 문자열을 구성하는 각 숫자 중 가장 큰 수를 나타내는 숫자를 리턴해야 합니다.
주의 사항
반복문(for)문을 사용해야 합니다.
str.split 사용은 금지됩니다.
빈 문자열을 입력받은 경우, 0을 리턴해야 합니다.
첫번째 문제풀이
function getMaxNumberFromString(str) {
// TODO: 여기에 코드를 작성합니다.
// 가장 큰 숫자를 찾기 위해선 기준이 필요하다.
// 엣지케이스인 빈문자열은 미리 뺴준다.
if (str.length === 0){
return '0';
}
let result = '';
for (let i=1; i<=str.length; i++){
if (str[i-1] < str[i]){
result = str[i];
}
} return result;
}
두번째 문제풀이
문자열을 숫자로 바꿔주는 메소드를 이용해보겠습니다.
parseInt(string, 진법수) -> 문자열을 정수로 바꾸는 함수
parseFloat() -> 문자열을 실수로 바꾸는 함수
사용해서 풀어보겠습니다.~~
function getMaxNumberFromString(str) {
let result = 0
for (let i=0; i<str.length; i++){
if ( parseInt(str[i]) > result){ // 문자열인 숫자를 정수로 바꿔주지
result = parseInt(str[i]);
}
}return String(result); // 마무리로 문자열 리턴
}
문자열과 두 개의 문자(from, to)를 입력받아, 문자열에 등장하는 특정 문자(from)가 다른 문자(to)로 바뀐 문자열을 리턴해야 합니다.
잘못된 코드 찾기!! 시작~~
function replaceAll(str, from, to) {
// TODO: 여기에 코드를 작성합니다.
let result = '';
for(let i = 0; i <= str.length; i++){ // 반복 횟수 지정을 잘해야한. 문자열은 0번째부터 시작하기 때문에 마지막은...우리가 생각하는것보다 하나 작게 ㅇㅋ?
if(str[i] !== from ){
result = result + str[i];
}else if (str[i] === from){
result = result + to
}
}return result;
}
그래서 정답코드
function replaceAll(str, from, to) {
// TODO: 여기에 코드를 작성합니다.
// 문자열을 하나씩 검색하다가 같은 문자가 나올시 to로 바꿀것
// 그리고 다시 문자열을 쌓는다.
let result = '';
for(let i = 0; i < str.length; i++){
if(str[i] === from){
result = result + to
} else {
result = result + str[i]
}
} return result;
}
문자열은 배열과 다르게 바로 변경이 안됨. 그러니까 문자열을 하나 하나 다시 반복해서 다시 만들어야함
문자열을 입력받아 각 문자(letter) 뒤에 해당 문자의 인덱스가 추가된 문자열을 리턴해야 합니다.
function characterAndNumber(word) {
// TODO: 여기에 코드를 작성합니다.
let result = '';
for(let i = 0; i<word.length; i++){
result = result + word[i] + i
}
return result;
}
뭐 간단하쥬??!!
밑(base)과 지수(exponent)를 입력받아 밑의 거듭제곱을 리턴해야 합니다.
function computePower(base, exponent) {
// TODO: 여기에 코드를 작성합니다.
let result = 1;
for(let i=1; i<=exponent; i++){
result = result*base
} return result;
}
형들 잠심 쉬어가는 문제를 풀어봤어 ~~ 자신감 좀 올라갔어??
수를 입력받아 약수(factor)의 합을 리턴해야 합니다.
function getSumOfFactors(num) {
// TODO: 여기에 코드를 작성합니다.
// 약수를 나타낼 식을 보여줘야함.
let result = 0;
for(let i=1; i<=num; i++){
if(num%i === 0){ // 1부터 정수로 나눴을때 나머지가 0인경우가 약수 이다.
result = result + i // 약수로 된 i를 모아서 더하자
}
}return result;
}
형님들 자신감 +5 된분들만 다음 데이트때 보자 ~~
다음엔 소수구하기랑 이중반복문 할꺼야
담에 보장