랜덤으로 문자열 3개를 입력 받아, 제일 짧은 문자열을 출력하는 문제
function findShortestOfThreeWords(word1, word2, word3) {
if (word1.length < word2.length)
{if (word1.length < word3.length){
return word1
}} else if (word2.length < word1.length){
if (word2.length < word3.length){
return word2
}} else if (word3.length < word1.length){
if (word3.length < word2.length){
return word3
}
}
}
1트. 일단 같은 거 생각 안 하고 단순 길이 비교로만 짜봤는데,
이렇게 짜고 실행해보니 (같은 거 제외하고) word3이 제일 짧은 경우가 출력이 되지 않았음.
어차피 같은 것도 생각해 봐야 하니 일단 뒤엎고 다시 생각해 보기로.
function findShortestOfThreeWords(word1, word2, word3) {
if (word1.length <= word2.length){
shortest = word1
if (shortest <= word3.length){
shortest = word1
}
}
if (word2.length < word1.length){
shortest = word2
if (shortest <= word3.length){
shortest = word2
}
}
if (word3.length < word1.length){
shortest = word3
if (shortest < word2.length){
shortest = word3
}
}
return shortest
}
2트. 일단 같은 문자열이면 앞에걸 출력한댔으니 등호는 작은 게 왼쪽에 있는 (word1 과 word2&3의 비교) 애들만 넣고,
shortest 변수를 새로 만들어서 값을 할당시켜서 진행했는데도 ㅠ.ㅠ 딱 하나가 안됐다
software, is, fun 에서 계속 해서 fun만 출력되는 것...
function findShortestOfThreeWords(word1, word2, word3) {
if (word1.length <= word2.length){
shortest = word1
if (shortest <= word3.length){
shortest = word1
}
}
else if (word2.length < word1.length){
shortest = word2
if (shortest <= word3.length){
shortest = word2
}
}
else if (word3.length < word1.length){
shortest = word3
if (shortest < word2.length){
shortest = word3
}
}
return shortest
}
3트. 조건문을 조건문 속에 넣고 else if로 바꿨는뎅.. 이제는
차례대로 'must', 'choose', 'me'을(를) 입력받은 경우, 'me'을(를) 리턴해야 합니다
차례대로 'happy', 'good', 'wow'을(를) 입력받은 경우, 'wow'을(를) 리턴해야 합니다
이 두 개를 각각 must, good으로 리턴.
function findShortestOfThreeWords(word1, word2, word3) {
let shortest = word1
if (word1.length > word2.length){
shortest = word2
if (word2.length >= word3.length){
shortest = word3
}
}
return shortest
}
4트. 생각해보니 word1 을 일단 기본값으로 지정해도 될 거 같아서 급 짧아진 코드
차례대로 'must', 'choose', 'me'을(를) 입력받은 경우, 'me'을(를) 리턴해야 합니다
하지만 여전히 여기서 must를 출력한다... ㅠ_ㅠ
function findShortestOfThreeWords(word1, word2, word3) {
let shortest = word1
if (word1.length > word2.length){
shortest = word2
if (word2.length >= word3.length){
shortest = word3
}
} else if (word1.length > word3.length){
shortest = word3
}
return shortest
}
5트.. 드뎌 성공 .. 이무슨 실패의 연속기록인가 ㅠ_ㅠ.....
암튼 바보같이 word1이랑 3을 비교를 안해 넣었다는 거다.. 발견했으니까 됐지
레퍼런스도 똑같이 나왔다 그래도 스스로 깨우친거에 큰 큰 점수!
문자열을 입력받아 그 길이가 홀수인지 여부를 리턴해야 합니다.
function isOddLength(word) {
if (word.length % 2 === 1){
return true
}
return false
}
어렵지 않게 해결
수(num)와 문자열을 입력받아 차례대로 num개의 문자로 구성된 문자열을 리턴해야 합니다.
function takeLetters(num, str) {
return str.substr(0,num)
}
내가 쓴 코드. substr 이용했다 (시작지점, 길이)
function takeLetters(num, str) {
if (num >= str.length || str === '') {
return str;
}
return str.slice(0, num);
}
레퍼런스. 일단 str 값이 없거나 num보다 크면 str을 출력하도록 설정하고, slice를 이용
두 개의 숫자 문자열을 입력받아 더 큰 수를 나타내는 문자열을 구하고, 해당 문자열이 나타내는 수에 5를 더한 수를 나타내는 숫자 문자열을 리턴해야 합니다.
❌ 페어분이랑 문제풀면서 내가 썼던 코드 (실패)
function compareNumberStrings(numStr1, numStr2) {
if (Number('numStr1') < Number('numStr2')){
return 'numStr2.length + 5'
} else {
return 'numStr1.length + 5'
}
}
Number()를 이용해서 숫자로 바꾼다음에 크기 비교를 했는데 싹다 실패
결과 값이 그냥 numStr2.length + 5 이런 식으로 출력이 되었다.. 계산을 먼저하고 스트링 타입이 될 줄 알았는데 아니었음
근데 이거 문제를 다시읽어보니.. length를 대체 왜 가져온거지 갑자기? ㅋㅋㅋㅋ
완전 뻘짓했던 코드는 안 가지고 오는데 이건 그래도 가지고 온 이유가,
변수였던 numStr1,2를 Number()안에 넣으면서 작은 따옴표를 적은 것, 그리고
' ' 말고 String() 을 이용해서 숫자를 다시 문자열로 바꾸는 작업을 할 것.... 해서 가지고 와봤다
function compareNumberStrings(numStr1, numStr2) {
if (Number(numStr1) < Number(numStr2)){
return String(Number(numStr2) + 5)
} else {
return String(Number(numStr1) + 5)
}
}
이렇게 해서 성공했는데 상당히 난잡한 모습..
사실 적다가 아 변수를 새로 할당하면 되겠다 했는데 일단 하던것부터 끝내고 새로 해봄
function compareNumberStrings(numStr1, numStr2) {
let num1 = Number(numStr1)
let num2 = Number(numStr2)
if (num1 >= num2) {
return String(num1+5)
} else {
return String(num2+5)
}
}
그래서 나온 결과! 레퍼런스도 이와 같은데 Number() 말고 parseInt() 이용
사용자의 이름과 미접속 시간(분)을 입력받아 조건별로 다른 메세지를 리턴해야 합니다.
function makeLastSeenMsg(name, period) {
let hour = parseInt(period / 60)
let day = parseInt(hour / 24)
if (period<60){
return `${name}: ${period}분 전에 접속함`
} else if (period>60 && period<1440) {
return `${name}: ${hour}시간 전에 접속함`
} else if (period>1440) {
return `${name}: ${day}일 전에 접속함`
}
}
내가 썼던 답.. 뭐 거의 노가다인가..? parseInt 는 정수처리 해줌.
function makeLastSeenMsg(name, period) {
const day = 60 * 24;
const hour = 60;
if (period >= day) {
return `${name}: ${Math.floor(period / day)}일 전에 접속함`;
} else if (period >= hour) {
return `${name}: ${Math.floor(period / hour)}시간 전에 접속함`;
} else {
return `${name}: ${period}분 전에 접속함`;
}
}
레퍼런스 답. 나는 어차피 내림하는게 소수점 떼어버리는(정수처리) 일이라고 생각해서 시작부터 떼어버렸는데,
여기선 Math.floor() 를 이용해서 소수점 버림 연산을 이용함. 나는 math 이거 적응이 잘 안돼서.. 잘 이용해버릇해야지
Math.floor() : 소수점 이하를 버림한다.
Math.ceil() : 소수점 이하를 올림한다.
Math.round() : 소수점 이하를 반올림한다.
진짜로 진짜로 너무 힘들었다
근데 반복문까지 끝내고 나서 회고하는 거라 그런지
그나마 좀 낫다..^^...........
HTML/CSS 부터 할 줄 알았지..
반복문이 진짜 헬of헬이었음 그거 챕터 하나였는데 끝까지 결국 못풀고..
이거도 페어분이랑도 계속 너무 힘들다.. 고생하셨다.. 하면서 7시 넘어서까지 계속 코플릿 풀었다 ㅠ_ㅠ