전체 글 56

[Javascript] 두 수의 합

문제 설명 : 0 이상의 두 정수가 문자열 a, b로 주어질 때, a + b의 값을 문자열로 return 하는 solution 함수를 작성해 주세요. 뭐지~! 너무 쉬운데 정답률이 왜 낮은 거지~! 하면서 풀었으나 그러면 그렇지 테스트 케이스 2번이 이 문제의 핵심이었다. 예제 2번의 a, b는 각각 18446744073709551615, 287346502836570928366이고 18446744073709551615 + 287346502836570928366 = 305793246910280479981입니다. 따라서 "305793246910280479981"을 return 합니다. 그냥 덧셈을 시키면 305793246910280479981이 안 나오고 305793246910280500000이 반환되었다...

[Javascript] 문자 개수 세기, 배열 만들기 4

1) 문자 개수 세기 문제 설명 : 알파벳 대소문자로만 이루어진 문자열 my_string이 주어질 때, my_string에서 'A'의 개수, my_string에서 'B'의 개수,..., my_string에서 'Z'의 개수, my_string에서 'a'의 개수, my_string에서 'b'의 개수,..., my_string에서 'z'의 개수를 순서대로 담은 길이 52의 정수 배열을 return 하는 solution 함수를 작성해 주세요. 문자 개수 세기는 도저히 알고리즘 자체가 생각나지 않아서 🤯 손도 못 대고 다른 사람의 풀이를 봤다. (스탬프 괜히 받고 싶었는데 잘 가...) 그냥 단순하게 알파벳 대소문자를 쭉 나열해서 문자열을 만들고 반복문을 돌려서 인덱스로 찾는 방식이었다니.....😞 그런 단순 노..

[Javascript] 조건에 맞게 수열 변환하기 2

문제 설명 : 정수 배열 arr가 주어집니다. arr의 각 원소에 대해 값이 50보다 크거나 같은 짝수라면 2로 나누고, 50보다 작은 홀수라면 2를 곱하고 다시 1을 더합니다. 이러한 작업을 x번 반복한 결과인 배열을 arr(x)라고 표현했을 때, arr(x) = arr(x + 1)인 x가 항상 존재합니다. 이러한 x 중 가장 작은 값을 return 하는 solution 함수를 완성해 주세요. 단, 두 배열에 대한 "="는 두 배열의 크기가 서로 같으며, 같은 인덱스의 원소가 각각 서로 같음을 의미합니다. 문제를 읽으면서 필요한 작업을 생각해내는 건 어렵지 않았다. 1. 배열을 변환하는 작업이 하나 필요하다. 2. 변환된 배열과 이전 배열을 비교해야 하므로 이전 배열을 변수로 저장돼야 하고 이게 계속 ..

[Javascript] 1로 만들기 (+답변 추가)

문제 설명 : 정수가 있을 때, 짝수라면 반으로 나누고, 홀수라면 1을 뺀 뒤 반으로 나누면, 마지막엔 1이 됩니다. 정수들이 담긴 리스트 num_list가 주어질 때, num_list의 모든 원소를 1로 만들기 위해서 필요한 나누기 연산의 횟수를 return하도록 solution 함수를 완성해주세요. 첫 풀이 : 로직 과정은 분명히 맞는 것 같은데 자꾸 답이 7로 나온다. 한 번씩 카운트를 덜한다는 소리 같은데, 왜 그렇게 되는지 도무지 원인을 찾지 못했다... function solution(num_list) { return num_list.reduce((acc, cur) => { while (cur !== 1) { return cur % 2 ? (cur - 1) / 2 : cur / 2; acc++..

[Javascript] 세로 읽기

문제 설명 : 문자열 my_string과 두 정수 m, c가 주어집니다. my_string을 한 줄에 m 글자씩 가로로 적었을 때 왼쪽부터 세로로 c번째 열에 적힌 글자들을 문자열로 return 하는 solution 함수를 작성해 주세요. 문자열을 배열로 만들어서 나눠야겠다 ➡ 배열을 갯수만큼 자르는 법 이래저래 검색해서 코드 짬 (하다 보니 코드가 너무 길어져서 그냥 비권장이어도 아직 유효한 메소드인데 substr 쓰는 게 낫지 않나? 라는 생각이 살짝 들었으나 일단 함) ➡ 나눈 배열을 forEach로 반복 돌려서 빈 문자열에 붙임 ➡ 마지막 배열 길이가 모자랄 경우 undefined가 붙길래 조건연산자 추가 그렇게 해서 작성한 코드..... function solution(my_string, m, ..

[Javascript] 수열과 구간 쿼리 3

점점 갈수록 문제가 어려워지는 게 느껴진다😂 아직 기초인데 진짜 코딩테스트는 어떡하면 좋지?!? 문제 설명 : 정수 배열 arr와 2차원 정수 배열 queries이 주어집니다. queries의 원소는 각각 하나의 query를 나타내며, [i, j] 꼴입니다. 각 query마다 순서대로 arr[i]의 값과 arr[j]의 값을 서로 바꿉니다. 위 규칙에 따라 queries를 처리한 이후의 arr를 return 하는 solution 함수를 완성해 주세요. 나의 풀이... 처음에는 reduce에 splice를 써서 해보려는데 또 초깃값 데이터를 인식해서 메소드를 사용하지 못했다. 그래서 이렇게 풀었다. function solution(arr, queries) { const answer = [...arr]; fo..

[Javascript] 날짜 비교하기

문제 설명 : 정수 배열 date1과 date2가 주어집니다. 두 배열은 각각 날짜를 나타내며 [year, month, day] 꼴로 주어집니다. 각 배열에서 year는 연도를, month는 월을, day는 날짜를 나타냅니다. 만약 date1이 date2보다 앞서는 날짜라면 1을, 아니면 0을 return 하는 solution 함수를 완성해 주세요. 테스트 케이스까지는 통과하는데, 정작 채점을 하면 15문제 중 4문제가 틀렸다. 원인을 끝내 찾아내지 못하고 결국 구글링으로 답을 찾을 수밖에 없었다. 처음에 짠 코드 : function solution(date1, date2) { const [year1, month1, day1] = date1; const [year2, month2, day2] = date..

[Javascript] 특이한 이차원 배열 1

솔직히 혼자 푸는 덴 실패했고 검색해서 방법을 얻어서 겨우 풀었다ㅠㅠ function solution(n) { let arr = new Array(n).fill(new Array(n).fill(0)); return arr.map((el, i) => { return el.map((v, vi) => i === vi ? 1 : v); }) } 아래는 다른 사람들의 풀이. 중첩 반복을 안 쓰는 방법은 생각해보지 못해서 굉장히 신선했다. function solution(n) { const answer = Array.from(Array(n), () => Array(n).fill(0)); for (let i = 0; i < n; i++) { answer[i][i] = 1; } return answer; } funct..

[Javascript] Set 객체

오늘 주사위 게임2와 간단한 식 계산하기 문제에서 다른 사람의 풀이를 보다가 Set 객체를 이용한 코드를 두 번이나 발견했다. 학원에서도 JS책에서도 배운 적 없는 생소한 객체였는데, ES6부터 추가된 객체라고 하여 초급 레벨이나마 간단히 정리해보기로 했다. set은 다른 프로그래밍 언어에는 이미 존재하던 데이터 타입(= 데이터 집합 = 데이터 리스트)이라고 한다. 중복되는 값을 가지지 않는 데이터라는 점이 포인트다. 생성자 new Set() 으로 set을 만들 때 매개변수(여기서는 iterable 반복자라고 부른다. 왜냐하면 Set 객체는 요소를 순회시켜 콜백함수나 반복문 같은 작업을 할 수 있기 때문이다.)로 1, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 5, 5, 5 이렇게 중복된 값을..