문제 풀기/JavaScripts 67

문제 49. 두 개 뽑아서 더하기(난이도 5)

반복문을 아에 안 쓰고 만들어볼려고 시도 했지만아에 안 쓰는건 불가능 한 것 같았다... 먼저,numbers.sort().map((element, index) =>{})로 정렬된 numbers 배열의 각 요소에 접근하고, numbers.sort().map((element, index)=>{         for(let i = index + 1; i         {             if(!answer.includes(element + numbers[i]))             {                 answer.push(element + numbers[i])                }         }})index + 1 ~ numbers.length 만큼 반복하면서answer.inc..

문제 48. K번째수정렬(난이도)(난이도 5)

저번에 reduce 함수에 배열을 매개변수로 전달했단 것 처럼,commands.map 함수에 배열을 매개변수로 전달했다. 그 후, map함수 내부에서 array.slice 필요한 부분을 잘라내고,sort함수로 정렬한 후 원하는 값을 추출해 return 했다. 제출한 코드 :  function solution(array, commands)  {     return commands.map((arr)=>     {         return array.slice(arr[0] - 1, arr[1]).sort((a, b)=> a - b)[arr[2]-1]     }) }

문제 47. 문자열 내 마음대로 정렬하기(난이도 5)(sort 복습)

sort() 함수가 정렬을 해준다는 사실은 알고 있었다.그런데 어떤 기준으로 정렬을 하는지 알아봤다. sort((a,b)=> ~~~~)가 있을 때조건에 의해  return -1은 b(두 번째 요소)가 a(첫 번째 요소) 보다 앞에 있어야 한다. return 0은 순서 유지 return 1은  b(두 번째 요소)가 a(첫 번째 요소) 보다 뒤에 있어야 한다. 였다. 위를 바탕으로 순서를 정해주면, function solution(strings, n)  {     return strings.sort((a, b)=>     {         if(a[n] == b[n] && a     }) } 코드로 표현할 수 있고 더 정리하면, 제출한 코드 :  function solution(strings, n)  {  ..

문제 46. 숫자 문자열과 영단어(난이도 7)(Dictionary)

문제를 보고 딕셔너리(dictionary)를 사용해야 한다고 판단했다.하지만, JavaScript에서 딕셔너리를 사용해 본 경험이 없었다. 찾아 본 결과, 선언은let dictionary = {}으로 가능하고,let dictionary = {      key : values,      key : values,      key : values}로 선언 및 초기화가 가능했다. 선언만 하고 내용을 추가할 때는dictionary[key] = values로 가능했다. 삭제는 delete dictionary[key] = values 로 delete만 붙여주면 됐다. dictionary의 모든 key값을 확인하는 방법은Object.key(dictionary)로 가능했고, 모든 values값을 확인하는 방법은Objec..

문제 45. 시저 암호(난이도 7)(아스키코드 활용)

map 함수를 이용해서 삼항 연산자로 풀어볼려고 했는데...시간만 소비하고, 풀지 못 했다... 그래도 map((element)=>{      ~~~~로 문제를 풀어봤다.} s.split("")으로 문자열을 단어 모음 배열로 만든 후 단어 모음 배열.map((element)=>{    if(element.match(' ')) return ' '    //element.match(' ')로 공백은 공백으로 남기고       const Ask = element.charCodeAt()    // 문자 요소를 아스키 코드로 변환하고        if(Ask >= 65 && Ask     // 대문자 영역이면    // Ask - 65로 0 ~ 25(알파벳 개수)로 변경 후    // + n으로 알파벳 순으로 n..

문제 44. (중요)최소직사각형(난이도)(난이도 10)(2중 배열 reduce)

문제를 보고 반복문을 사용하지 않는 방법이 생각나지 않았다...그래서 반복문을 사용하더라도 간단하고, 수행시간이 빠른 코드를 작성하고 싶었다. 먼저,  sizes.map((array)=> array.sort((a, b)=> b - a)로 width와 height 중 큰 값을 무조건 width에 오게 만들었다. 그 후, let w = size[0][0], h = size[0][1]로 가로, 세로 길이를 저장한 후 반복문으로 순회해 가로, 세로에서 큰 값을 갱신했다. function solution(sizes)  {     sizes = sizes.map((array)=> array.sort((a, b)=> b - a))     console.log(sizes)     let w = sizes[0][0], ..

문제 43. 크기가 작은 부분 문자열 (난이도 7)(substring 복습)

p 길이 만큼 t의 숫자를 순차적으로 자른 숫자들과 비교해서같거나 작은 숫자가 있으면 Count++ 해줘야 하는 문제이다. 글자를 자르기 위해 substring()함수를 사용했는데,substring('시작 위치', '자를 위치')로 사용 가능하고시작 위치 ~ 자를 위치 - 1까지 잘라준다. 위의 정보를 조합하면 제출한 코드와 같이 만들 수 있다. 이때, 반복 종료의 t.length - p.length(중요 부분)와t.substring(i, i + p.length)(중요 부분)를 만드는 과정에서실수가 있었지만, console.log()로 확인하면서해결할 수 있었다. 제출한 코드 : function solution(t, p)  {     let count = 0;     for(let i = 0; i    ..

문제 42. 삼총사

알고보면 굉장히 간단했다... 너무 많이 생각하다 보니 머리가 고장났었다...그냥 3중 for문을 사용해서 각 숫자를 모두 더한 값이 0일 때를 구하는 것이 가장 수행시간이 빨랐다.. 제출한 코드 : function solution(number)  {     let count = 0;          for(let i = 0; i     {         for(let j = i + 1; j         {             let sum = number[i] + number[j];             for(let k = j + 1; k             {                 if(sum + number[k] == 0)                     count++       ..

문제 41. 이상한 문자 만들기(난이도 7)(toUpperCase, toLowerCase)

toUpperCase로소문자 -> 대문자,와 toLowerCase로 대문자 ->소문자 로 바꿀 수 있다. 다른 언어에는 isUpperCase, isLowerCase로 대소문자 비교가 가능하지만 JavaScript에는 isUpperCase, isLowerCase 가 존재하지 않는다. 비교 방법으로는 ex) str='lowercase' str == str.toUpperCase()-> false str == str.toLowerCase()-> true 로 toUpperCase와 toLowerCase로비교해야한다. 제출한 코드 :  function solution(s)  {     return s.split(' ').map((arr)=> arr.split('').map((element, index)=> inde..

문제 38. 직사각형 별찍기(난이도 7)(repeat 함수 복습)

어떻게 문제를 풀지... 하다가 repeat()함수가생각나 console.log("*".repeat(a))를 사용해 봤다."*"이 a개 찍히는 것을 확인하고, 줄바꿈을 방법을 생각해본 결과, ("*".repeat(a) + '\n').repeat(b)으로 원하는 별 개수 출력 및 줄 바꿈을수행해주었다. repeat 함수를 몰랐다면... 절대 풀지 못 했을 것 같다... 제출한 코드 :  process.stdin.setEncoding('utf8'); process.stdin.on('data', data => {     const n = data.split(" ");     const a = Number(n[0]), b = Number(n[1]);     console.log((("*".repeat(a)+'\..