문제 풀기 185

문제 47. 문자열 내 마음대로 정렬하기(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. 숫자 문자열과 영단어(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. 시저 암호(아스키코드 활용)

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. (중요)최소직사각형(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. 크기가 작은 부분 문자열(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. 이상한 문자 만들기(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. 직사각형 별찍기(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)+'\..

문제 37. 행렬의 덧셈(map 함수)

반복문을 사용한 코드 제출한 코드 : function solution(arr1, arr2) { var answer = arr1; for(let i = 0; i { for(let j = 0; j { answer[i][j] += arr2[i][j] } } return answer; } 반복문을 사용하지 않고 풀 수 있는 방법이 존재할 것이라 생각하고다른 사람의 풀이 법을 찾아 본 결과,map()함수가 존재했다. map()함수는 배열을 순회하며 각 요소를 콜백 함수로 적용해새로운 배열로 반환하기 위한 함수였다. map()함수의 사용법은map((element, index, array)=> ~~~)로 eleme..

뮨제 36. (중요)문자열 다루기 기본(지수 표기법, 비교 연산자)

처음 문제를 보고 단순히 Number.isInteger(Number(s))로 비교를 수행했다... 하지만, 여기에는 2가지 오류가 존재 했는데, 첫번째로, "문자열 s의 길이가 4 혹은 6이고"라는 부분을 만족시켜주지 않아 계속 문제를 틀렸었다.만약) "12345"인 문자열이 들어올 경우 Number함수에 의해 정수가 되고,IsInteger에서 true가 되기 때문이다. 두번째로, Number.isInteger(Number(s))를 사용할 경우Number("3e10") 경우 지수 표기법에 의해Number("3e10") = Number("3 * 10 ^ 10")으로 표기 돼isInteger가 true가 돼 버린다... 위의 경우를 해결하기 위해서는 비교 연산자를 활용해야 하는데,JavaScript에서 ..