View

JavaScript repl 문제

hooti 2020. 7. 26. 14:32

for문 Assignment

더보기

findSmallestElement 함수를 구현해 주세요.

findSmallestElement 의 arr 인자는 숫자 값으로만 이루어진 array 입니다.

array 의 값들 중 가장 작은 값을 리턴해주세요.

 

만일 array가 비어있으면 0을 리턴해주세요.

 

예를 들어, 다음과 같은 array이 인자(input)으로 들어왔다면:

 

[20, 200, 23, 1, 3, 9]

 

1이 리턴되어야 합니다.

작성한 답안

※ 해설 

문제에서 요구하는 것은 총 두가지. 1. 인자인 arr에서 가장 작은 값을 리턴 / 2. 인자 arr에 값이 없다면 0을 리턴.

가장먼저 2번째 요구부터 충족시켰다. if문을 이용해 arr에 길이가 0과 같다면 0을 리턴할것. 첫번째 요구 충족을 위해 else를 작성한다.  arr에서 가장 작은 값을 받을 변수를 선언해주고 for을 이용해 arr의 배열길이만큼 반복해줍니다.  반복문 내부에 if문을 작성해 돌고 있는 arr 배열의 해당값과 최소값변수 min을 비교합니다. 그 후 min을 리턴하면 arr안에 있던 배열들이 서로 크기를 비교하다가 가장 작은 값인 1이 리턴됩니다.

 

 

 

 


 

배열 조작하기 Assignment

더보기

divideArrayInHalf 함수를 다음과 같이 구현해주세요.

 

divideArrayInHalf 함수의 인자인 array는 숫자 값으로만 구성되어 있으며 정확히 총 5개의 요소(element)로 구성되어 있습니다.

 

array의 요소들 중 10과 같거나 작은 값의 element들은 result의 맨 앞으로,

10보다 큰 값의 요소들은 result의 맨 뒤로 재구성된 배열을 리턴해주세요.

 

* 중요사항

이때, 순서는 array의 맨 뒤의 요소 부터 맨 앞의 요소까지 순차적으로 이루어저야 합니다.

 

예를 들어, 인자 array 값이 다음과 같을때

 

[1, 20, 10, 5, 100]

 

result 배열이 만들어 지는 순서는 다음과 같으며,

 

[100]

[5, 100]

[10, 5, 100]

[10, 5, 100, 20]

[1, 10, 5, 100, 20]

 

아래와 같은 result가 리턴 되어야 합니다.

 

[1, 10, 5, 100, 20]

divideArrayInHalf 함수를 다음과 같이 구현해주세요.

 

divideArrayInHalf 함수의 인자인 array는 숫자 값으로만 구성되어 있으며 정확히 총 5개의 요소(element)로 구성되어 있습니다.

 

array의 요소들 중 10과 같거나 작은 값의 element들은 result의 맨 앞으로,

10보다 큰 값의 요소들은 result의 맨 뒤로 재구성된 배열을 리턴해주세요.

 

* 중요사항

이때, 순서는 array의 맨 뒤의 요소 부터 맨 앞의 요소까지 순차적으로 이루어저야 합니다.

 

예를 들어, 인자 array 값이 다음과 같을때

 

[1, 20, 10, 5, 100]

 

result 배열이 만들어 지는 순서는 다음과 같으며,

 

[100]

[5, 100]

[10, 5, 100]

[10, 5, 100, 20]

[1, 10, 5, 100, 20]

 

아래와 같은 result가 리턴 되어야 합니다.

 

[1, 10, 5, 100, 20]

작성한 답안

※ 해설 

문제에서 요구하는 것은 array안 인자값이 10보다 작거나 같으면 앞으로, 크면 뒤로 재배열하라는 것. 그러나 [배열의 맨뒤부터 역순으로 시작해야한다] 조건이 하나 붙는다. 

 

가장 먼저 새로운 배열을 넣을 빈배열을 변수로 선언해준다. 그 다음은 array의 길이만큼 for문으로 반복한다. 대신 순서를 역순으로 하라는 조건이 있었으니 큰 for문안에 역순시작의 for문을 선언한다. 역순시작 반복문은 시작값이 4로 1씩 크기가 감소한다. 배열의 가장 뒤부터 앞으로 가는것이다. 이제 문제에서 말한 요구사항을 작성하자. if문을 이용해 array[j]의 값이 10보다 작거나 같으면 빈배열인 arrbox에 unshift(앞부터 배열추가), 크다면 push(뒤부터 배열추가)로 나눠  작성한다.

 

이 순서대로 작성하면 [1, 10, 5, 100, 20] 가 리턴된다.

 


 

String Assignment

더보기

String의 slice()도 자주 사용되는 문자열 함수 중 하나입니다.

먼저 slice에 대한 설명을 가볍게 읽어봅시다.

(https://www.w3schools.com/jsref/jsref_slice_string.asp)

 

그 후 sliceCityFromAddress 함수를 구현해 주세요.

- sliceCityFromAddress 함수는 address 인자를 받습니다.

- address 인자에는 주소를 나타내는 string이 주어집니다.

- 주어진 주소가 어느 도시인지를 찾아내서, 해당 주소에서 도시 부분만 삭제한 새로운 주소를 리턴해 주세요.

 

  • 주소는 무조건 "시" 로 끝납니다. 예를 들어, "서울시".

  • "도" 와 "시" 는 주소에 한번 밖에 포함되어 있지 않습니다.

 

예를 들어, 다음과 같은 주소가 주어졌다면;

 

"경기도 성남시 분당구 중앙공원로 53"

 

다음과 같은 값이 리턴되어야 합니다:

 

"경기도 분당구 중앙공원로 53"

작성한 답안
모범 답안

※ 해설 

문제에서 요구하는것은 [인자에 들어온 주소 중 "~시"를 제거하고 나머지만 리턴하라]. 일단 모범답안과 내가 작성한 답안 두가지를 작성해 놓았다. 내가 작성한 답안은  인자에서 " "를 찾은 blank, 인자에서  "시" 를 찾은 add. 조건문으로 공백보다 시가 먼저 있을 경우 맨앞부터 공백까지 + 시(공백)에서 인자의 끝까지 출력하고, 시보다 공백이 먼저 존재할 경우 시(공백)부터 인자의 끝까지 출력한다.

 

 


 

Object Assignment

더보기

이제까지 성공하셨던 Assignment와는 조금 다른 유형입니다.

그 동안에는 특정값을 구해서 return했다면,

이번에는 인자로 받은 데이터를 조합해서, 구조를 바꿔서 리턴합니다.

 

getData에 배열 세 개를 인자로 넘길 것이고,

이 배열 세 개를 조합해서 하나의 새로운 객체를 만들 것입니다.

 

getData는 세 개의 배열을 인자로 받는 함수입니다.

  • salesArr: 날짜별 판매량

  • ex) [["20190401", 34], ["20190402", 23], ["20190403", 29]]

  • reviewArr: 날짜별 리뷰수

  • ex) [["20190328", 3], ["20190401", 0], ["20190403", 1]]

  • likeArr: 날짜별 좋아요수

  • ex) [["20190328", 98], ["20190401", 102], ["20190403", 125]]

 

위의 예시로 보여드린 배열은 단지 예일뿐,

날짜별 판매량 배열은 365일치 요소가 들어있을 수도 있습니다.

 

왜 각각 세 개의 배열을 하나의 객체로 구조를 바꿔야 할까요?

 

위의 배열에서 4월 1일에 판매량, 리뷰수, 좋아요수를 확인하려면

세 개의 배열을 각각 for문으로 반복해서 날짜를 확인해야 하므로 좋은 구조의 데이터라고 할 수 없습니다.

(날짜가 365일이라고 하면, 세 개의 배열이 각자 365번 돌아야 하니까요)

 

그래서 세 개의 배열을 사용하기 좋게 객체로 바꿀 것입니다.

 

객체는 프로퍼티명으로 바로 접근 가능하니까,

날짜만 알면 반복문을 돌지 않아도 바로 데이터를 얻을 수 있습니다.

그래서 객체의 형태로 데이터 구조를 바꾸려는 것입니다.

 

다음 요구사항을 충족하는 객체를 만들어서 return 해주세요.

 

objData가 갖고 있는 property는 3개 입니다.

  • sumAmount: 총 판매량

  • sumReview: 총 리뷰개수

  • sumLike: 총 좋아요수

작성한 답안

※ 해설 

문제에서 요구하는 것은 각 배열에서 일정값을 꺼내 새로운 배열을 구축하는 것. 맨 먼저 새로운 배열을 담을 빈배열 변수(objData)를 선언한다.  그리고 각 배열에서 값을 추출하여 담을 sumAmount(총 판매량), sumReview(총 리뷰개수), sumLike(총 좋아요수) 변수들을 선언한다. 해당 변수에 들어갈 값을 추출하기위한 for문을 작성한다. 각 인자의 길이만큼 반복되는 for문을 작성한 후 배열에서첫번째값을 추출한다.각 각 반복문을 작성하여 변수에 값을 넣고, 그 뒤에 objData에 새롭게 배열을 작성하여 리턴한다.

 

 


[es6] template literals, string method Assignment

더보기

getCookie` 함수를 구현해주세요

1. 아무 인자도 받지 않습니다.

2. 쿠키에 접근해서 저장된 현재 쿠키 정보를 가져옵니다.

3. wecode_cookie 라는 key값으로 저장된 쿠키정보를 추출하고 그 value 값을 리턴합니다.

 

document.cookie 는 모든 쿠키 정보가 세미콜론; 으로 구분되어 하나의 string으로 되어있네요.

 

localStorage나 sessionStorage는 바로 key 이름으로 접근할 수 있어서, value를 갖고 오기가 쉬운데, cookie는 string 을 분해해서 value를 가져와야합니다.

그 동안 배운 메서드를 활용해서 cookie 중에 'wecode_cookie' 라는 키의 값을 찾아주세요.

작성한 답안
모범 답안

 

※ 해설 

wecode_cookie라는 key의 valuer값을 리턴하는것이 이 문제의 요구이다.  해당 문제를 보면 굉장히 복잡하게 풀었는데 내가 작성한 값보다는 모범답안이 가장 빠른 답인것같다. 작성한 답안에 대한 해설만 정리하려 한다.

 

구한 값은 result라는 변수안에 선언할 예정이기때문에 공백을 넣은 변수로 선언해준다. 또 찾아야하는 key의 이름을 담은 name이라는 변수,  쿠키 내용중 잘라야하는 '; '를 담은 변수를 각 각 선언한다. for문으로 '; '로 구분되어 잘린 각 배열들의 길이만큼 반복문을 시작한다. 배열을 반복하면서 만약에 coki[i]의 배열 중 name이라는 문구가 없다면,  name+1(공백)에서 coki[i]의 끝까지 잘라낸다. 그 후에 result의 값을 리턴한다.

 

 


 

array methods Assignment

더보기

두 문제 모두 map 메서드와 arrow function을 사용해주세요.

 

 

1. moreThan100 함수에 숫자로 구성된 배열을 인자로 넘겨드립니다.

 

100 보다 크거나 같으면, true를

100 보다 작으면 false로 요소를 변경하여

새로운 배열을 return해주세요.

 

예를 들어

nums(input)은

[100, 9, 30, 7]

 

return은

[true, false, false, false]

 

2. formatDate 함수에 날짜가 담긴 배열을 전달드립니다.

날짜의 data type은 string이며,

보내는 날짜 타입은 'YYYY-MM-DD' 입니다.

 

해당 날짜의 형식을 'YYYY년 MM월 DD일' 로 바꿔서

새로운 배열을 return 해주세요.

 

예를 들어

dates(input)은

['2019-03-21', '2019-04-21', '2019-05-21']

 

return은

['2019년 03월 21일', '2019년 04월 21일', '2019년 05월 21일']

작성된 답안

※ 해설 

1. moreThan100 함수에 숫자로 구성된 배열을 중 100보다 크거나 같으면 trun, 작으면 false를 출력한다. 

각 내용을 리턴할 빈배열을 변수로 선언한다. 인자의 길이만큼 반복되는 선언문 forEach을 작성한다. 인자의 길이만큼 반복하는 중 만약에 i가 100보다 크거나 같으면  trun, 작으면 false을 출력하여 arrbox에 넣는다.

 

2. formatDate 함수에 날짜가 담긴 배열에서 '-'을 잘라 '~년 ~월 ~일'로 변경한다.

배열의 콜백함수를 리턴하는 map을 사용한다. map을 변수로 지정하여 바로 리턴할수 있도록 작성한다. map안엔 cut이라는 arr안에서 '-'를 자르는 변수를 선언한 후 cut의 배열값을 각 각 리턴한다.

 

 


 

object (3) Assignment

더보기

getExamResult 함수를 구현해주세요.

 

인자 scores 는 다음과 같은 객체입니다.

객체의 요소의 갯수 및 키의 이름들은 달라질 수 있습니다.

객체의 값은 다음 9가지 문자열 중에서 하나를 가지고 있습니다.

('A+', 'A', 'B+', 'B', 'C+', 'C', 'D+', 'D', 'F')

 

{

'생활속의회계': 'C',

'논리적글쓰기': 'B',

'독일문화의이해': 'B+',

'기초수학': 'D+',

'영어회화': 'C+',

'인지발달심리학': 'A+',

}

 

인자 requiredClasses 는 다음과 같이 문자열로 된 배열입니다.

['영어회화', '기초수학', '공학수학', '컴퓨터과학개론']

 

다음 조건을 만족하는 객체를 리턴하도록 함수를 구현해주세요

 

1. scores 객체가 가지고 있는 키들은 새로운 객체에 포함되어야 합니다.

단, 그 값들은 다음 원리에 따라 숫자로 바뀌어 할당되어야 합니다.

 

A+ => 4.5

A => 4

B+ => 3.5

B => 3

C+ => 2.5

C => 2

D+ => 1.5

D => 1

F => 0

 

2. requiredClass 배열의 요소로는 존재하지만, scores의 키로는 존재하지 않는 항목이 있다면,

해당 요소는 새로운 객체의 키가 되고, 값으로 0을 가져야 합니다.

 

위에서 예시로 묘사된 객체와 배열이 인자로 들어왔다면,

다음과 같은 객체과 리턴됩니다. (요소간 순서는 다를수 있지만, 채점에 무관합니다.)

 

{

'생활속의회계': 2,

'논리적글쓰기': 3,

'독일문화의이해': 3.5,

'기초수학': 1.5,

'영어회화': 2.5,

'인지발달심리학': 4.5,

'공학수학': 0,

'컴퓨터과학개론': 0,

}

작성한 답안

※ 해설 

문제가 길어서 요구하는 내용이 무엇인지 인지하기 어렵지만 결국 요구하는 내용은 2가지이다. 1. scores가 존재하지 않은 requiredClass는 scores는 0으로 표시할것 / 2. scoresr값을 숫자로 변경할것.

 

scores값만 구성하면 되는것이기때문에 답안이 길어질 필요도 없다. 먼저 새로운 객체가 들어갈 빈객체변수 result를 선언한다. 그리고 scores의 변경될 값을 넣은 객체를 선언한다. 위 두가지를 선언했다면 준비는 모두 끝난것이다.

requiredClass의 길이만큼 반복되는 for문을 연다. requiredClass의 value값이 i인 변수를 선언한다. result의 value값이 [scBlank]면 0으로 리턴합니다.이렇게 리턴하게되면 모든 requiredClass의 value값이 0으로 변경됩니다.

 

'생활속의회계': 0,

'논리적글쓰기': 0,

 

그 뒤 새로운 for문을 연다. scores의 길이만큼 반복되는 for문이다. 이때 scores의 value값이 i2인 변수를 선언한 후, result의 value값을 scores의 변경될값을 넣은객체로 선언한다.

 

그 후 result를 리턴하게 되면 scores에 없는 requiredClass의 값은 0으로 고정되고, srores에 있는 값은 아래 for의 값으로 덮어씌워지게 된다.

 

 

 

'Assignment' 카테고리의 다른 글

React 초기세팅 해보자!  (0) 2020.08.06
HTTP을 알아보자  (0) 2020.08.05
Data Structure(자료구조)란?  (0) 2020.08.03
Semantic Web과 Semantic Tag(20 작성글)  (0) 2020.07.20
레이아웃의 모든 것 (18-2 작성글)  (0) 2020.07.20
Share Link
reply
«   2024/05   »
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