본문 바로가기

자료구조알고리즘/코드스테이츠 Coplit

(15)
07_convertListToObject [ 문제 ] 입출력 예시로 문제를 이해하자면, 입력받은 2차원 배열(배열 안에 요소가 배열인것. ex: [[1],[2]])에서 요소인 배열의 0번째 요소가 객체의 key, 1번째 요소가 객체의 value인 객체를 반환하는 것이다. 입력받은 배열이 const arr = [['make', 'Ford'],['model', 'Mustang']]이면, 0번째 요소인 'make', 'model'이 key, 'Ford', 'Mustang'이 각각 value가 되어 {make : 'Ford', model:'Mustang'}을 반환한다. [ 풀이 ] 나의 로직은 다음과 같다. 1/ 먼저 빈 객체를 선언한다. 2/ 반복문으로 객체에 속성들을 할당한다. (하지만 처음에 많이 헤맸다... 내가 간과한건 빈 배열을 입력받은 경..
06_letterCapitalize [ 문제 ] 문제 자체는 매우 간단하다. 입력받은 문자열의 각 단어 첫 글자를 대문자로 변경하여 반환하는 문제이다. 예를 들면, 'hello world'라는 문자열은 'hello'와 'world' 이렇게 두 단어로 이루어져있다. 이 단어들의 첫글자를 대문자로 변경한 "Hello World" 문자열을 반환하면 된다. [ 풀이 ] 나의 로직은 다음과 같다. 1/ 빈 문자열일 경우, 빈 문자열을 리턴한다. 2/ split 메서드를 이용하여 문자열 하나하나를 배열의 요소로 만든다. 3/ 반복문을 이용하여 전 요소가 " " 스페이스이면 새로운 스페이스, 혹은 새 단어의 시작이므로 toUpperCase메서드를 이용하여 대문자로 만든다. function letterCapitalize(str) { if(str === ..
05_firstReverse [ 문제 ] 문제 자체는 이해하기가 아주 쉬운, 간단한 문제이다. 입력받은 문자열을 순서를 반대로 하여 반환하는 문제이다. 입출력 예시를 보면, "codestates"라는 문자열을 받으면 순서를 반대로 한 문자열인 "setatsedoc"를 반환한다. [ 풀이 ] 나의 로직은 다음과 같다. 1/ 먼저 split 메소드를 이용하여 문자열 하나하나(띄어쓰기 포함)를 쪼개어 배열로 만든다. 2/ reverse 메소드를 이용하여 배열의 요소들을 반대로 만든다. 3/ 반복문을 이용하여 그 요소들을 문자열로 다 이어붙여서 반환한다. function firstReverse(str) { let arr = str.split(""); //변수를 선언하여 입력받은 str을 하나하나 쪼개어 배열로 만든 후, 할당한다. arr...
04_firstCharacter [ 문제 ] 아주 간단한 문제이다. 문제 그대로 입력받은 문자열을 공백 한 칸으로 구분하여 첫글자로만 이루어진 문자열을 반환하는 문제이다. 입출력 예시를 보면 'hello world'를 입력받으면 앞글자인 'h'와 'w'만 합쳐서 'hw'를 반환하는 것이다. [ 풀이 ] 나의 로직은 다음과 같다. 1/ 빈 문자열을 받으면 빈 문자열을 반환한다. 2/ 띄어쓰기를 기준으로 나눈 문자열을 배열로 만든다. 2/ let result = ""를 먼저 선언하고, 반복문을 이용하여 첫 글자만 result에 계속 붙여준다. function firstCharacter(str) { if(str ===""){ //빈 문자열을 입력받으면, 빈 문자열을 반환한다. return ""; } let arr = str.split(" "..
03_powerOfTwo [ 문제 ] 문제는 간단해보인다. 입력받은 수가 2의 거듭제곱인지의 여부를 boolean값으로 반환하는 것이다. 입출력 예시를 보면, 입력받은 수인 16은 2^4, 즉 2의 4, 2의 거듭제곱이므로 true값을 반환하고 22는 2의 거듭제곱이 아니므로 false값을 반환한다. 단, 주의사항은 while 반복문을 사용해야 한다는 것! [ 풀이 ] 내가 작성한 로직은 다음과 같다. 1/ 먼저 입력받은 수가 1인 경우에는 2의 0승이므로 true값을 반환시킨다. 2/ 입력받은 수가 1이 아닌 경우, 초기값이 2인 while 반복문을 이용하여 2를 곱해줌으로써 2의 거듭제곱으로 만든다. 그 값이 num과 일치하면 true를, 그렇지 않으면 false를 반환시킨다. function powerOfTwo(num) {..
02_computeWhenDouble [ 문제 ] 입출력 예시로 문제를 설명하자면, 7%의 연이율로 원금이 2배 이상이 될 때까지 걸리는 시간인 11년이 return된다. 예를 들어, 원금이 1원이고 연이율이 100%라고 해보자.(안다, 말도 안되는 이야기인걸..) 그럼 1년이 지나면 1원이었던 원금이 1+(1x100x0.01 원금x연이율x0.01)=1+1=2가 된다. 즉, 원래 원금이었던 1의 2배인 2가 된다. 그러므로 원금이 2배 이상이 될때까지 걸린 시간인 1이 return이 되는 것이다. [ 풀이 ] 1/ 먼저 원금을 capital이라는 변수로 선언한다. 2/ 1년 후 : capital + capital * interestRate * 0.01 = capital(1+1*interestRate*0.01)^1 3/ 2년 후 : capit..
01_transformFirstAndLast [ 문제 ] 입출력 예시로 문제를 설명하자면, 입력받은 배열 중 0번째 요소가 객체의 key, 마지막 요소가 객체의 value로 만들어 그 객체를 반환해야한다. 그리고 빈 배열을 입력받은 경우, 빈 객체를 반환해야한다. [ 풀이 ] 내가 작성한 로직은 아래와 같다. 1/ 먼저 빈 객체를 변수에 할당한다. 2/ 만약 배열의 길이가 0이라면(즉, 빈 배열이라면) 빈 객체를 그대로 반환한다. 3/ 빈 배열이 아니라면, 대괄호 표기법(bracket notation)을 사용하여 동적으로 생성시킨다. 4/ 객체를 할당한 변수를 반환한다. function transformFirstAndLast(arr) { let obj = {}; //변수를 선언하고, 빈 객체를 할당한다. if(arr.length === 0){ //..