문제 및 조건 나의 풀이 처음에 이 문제를 접했을 땐, '엥? 그래서 뭘 구하라는거지?' 라는 생각이 들었다. 그리고나서 입출력 예제를 본 후에 '벽'과 '공백'을 나타내는 배열을 만들어야 한다는 것을 알게 되었다. 이 문제를 보자마자 이렇게 풀어야겠다는 생각이 들었다. 그 순서는 다음과 같다.(그 때 노트에 적은 내용 그대로) 1. arr1 2진수 변환(n자리) arr2 2진수 변환(n자리) 2. 2. arr1의 각 요소의 문자열 각각의 자리, arr2의 각 요소의 문자열 각각의 자리에 하나라도 1이 존재하면 새로운 배열의 i번째 자리에 "#" 넣기 3. arr1의 각 요소의 문자열 각각의 자리, arr2의 각 요소의 문자열 각각의 자리에 하나라도 1이 존재하지 않으면 새로운 배열의 i번째 자리에 " ..
Algorithm
문제 함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰 것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴합니다. 제한 조건 n은 1이상 80,000,000,000 이하인 자연수 입니다. 입출력 예 n return 118372 873211 나의 풀이 정수를 내림차순으로 배치해주기 위해 정수를 문자열로 바꾼 후 진행해주었다. 배열로 바꾼 후 그 값을 sort를 이용해 내림차순으로 정렬해주었다. 그 후 문자열인점을 이용해 reduce메서드를 사용해 그대로 붙여주었다. "873211" 이라는 값을 뽑아냈지만 문자열이기 때문에 마지막에 다시 숫자로 변환시켜 주었다. function solution(n) { var answer = ..
문제 임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다. n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요. 제한 사항 n은 1 이상 50,000,000,000,000 이하인 양의 정수입니다. 입출력 예 n return 121 144 3 -1 입출력 예 #1 : 121은 양의 정수 11의 제곱이므로, (11+1)를 제곱한 144를 리턴합니다. 입출력 예 #2 : 3은 양의 정수의 제곱이 아니므로, -1을 리턴합니다. 나의 풀이 일단, 첫 번째 풀이는 실패했다. 18개의 테스트 코드 중 한 개 빼고 다 맞았지만 무슨 이유에선지 하나의 테스트 코드에서 실패가 떴다. function solu..
문제 문자열 s를 숫자로 변환한 결과를 반환하는 함수, solution을 완성하세요. 제한조건 s의 길이는 1이상 5 이하입니다. s의 맨 앞에는 부호(+,-)가 올 수 있습니다. s는 부호와 숫자로만 이루어져 있습니다. s는 "0"으로 시작하지 않습니다. 입출력 예 예를 들어 str이 "1234"이면 1234를 반환하고, "-1234"이면 -1234를 반환하면 됩니다. str은 부호(+,-)와 숫자로만 구성되어 있고, 잘못된 값이 입력되는 경우는 없습니다. 나의 풀이 솔직히 풀이랄 것도 없다. function solution(s) { var answer = 0; answer = Number(s); return answer; }
문제 자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return하는 solution 함수를 만들어주세요. 예를 들어 N=123이면 1 + 2 + 3 = 6 을 return하면 됩니다. 제한사항 N의 범위 : 100,000,000 이하의 자연수 입출력 예 N answer 123 6 987 24 입출력 예 #1 : 문제의 예시와 같습니다. 입출력 예 #2 : 9 + 8 + 7 = 24이므로 24를 return하면 됩니다. 나의 풀이 파라미터로 주어진 자연수 N을 각각의 자리로 분해하도록 '문자열'로 만들어 주었다. 그 후 반복문을 돌리는데 다시 숫자로 바꿔준 뒤 반복문을 돌며 모두 합쳐지도록 만들어 주었다. function solution(n){ var answer = 0; let str = Stri..
문제 자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5, 4, 3, 2, 1]을 리턴합니다. 제한조건 n은 10,000,000,000 이하인 자연수입니다. 입출력 예 n return 12345 [5, 4, 3, 2, 1] 나의 풀이 숫자를 반대 순서로 넣어야 하기 때문에 split을 사용해 배열에 넣어준 뒤에 forEach와 unshift를 써서 배열의 앞부분부터 넣어주었다. 그런데 type 이 Number인 경우에는 split이 사용되지 않아 파라미터로 받은 n을 문자열로 변환하여 이 과정을 진행했다. function solution(n) { var answer = []; n = String(n); let result = n.split("")..
문제 함수 solution은 정수 x와 자연수 n을 입력받아, x부터 시작해서 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다. 다음 제한 조건을 보고, 조건을 만족하는 함수, solution을 완성해주세요. 제한 조건 x는 -10,000,000 이상 10,000,000 이하인 정수입니다. n은 1000 이하인 자연수입니다. 입출력 예 x n answer 2 5 [2, 4, 6, 8, 10] 4 3 [4, 8, 12] -4 2 [-4, -8] 나의 풀이 x부터 시작해서 x씩 증가한다는 말이 곧 곱셈이랑 같은 말이라고 생각했다. 따라서 곱셈을 n번 만큼 반복해주며 answer에 배열로 넣어주었다. function solution(x, n) { var answer = []; for(let i=1;i
문제 정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요. 제한사항 n은 0이상 3000이하인 정수입니다. 입출력 예 n return 12 28 5 6 입출력 예 #1 : 12의 약수는 1, 2, 3, 4, 6, 12 입니다. 이를 모두 더하면 28입니다. 입출력 예 #2 : 5의 약수는 1, 5 입니다. 이를 모두 더하면 6입니다. 나의 풀이 반복문을 1~n까지 반복해주는데 i가 n의 약수이면 answer에 더해주는 식으로 풀었다. function solution(n) { var answer = 0; for(let i=1;i
문제 정수 num이 짝수일 경우 "Even"을 반환하고 홀수인 경우 "Odd"를 반환하는 함수, solution을 완성해주세요. 제한조건 num은 int 범위의 정수입니다. 0은 짝수입니다. 입출력 예 num return 3 "Odd" 4 "Even" 나의 풀이 우선 주어진 조건에 충실한 코드를 만들었다. 딱히 설명할 부분도 없는 것 같다. function solution(num) { var answer = ''; if(num%2===0){ answer = "Even"; } else { answer = "Odd"; } return answer; } 다른 문제들을 풀면서 삼항연산자를 연습해봐야겠다 싶어서 삼항 연산자를 이용해 풀어보았다. function solution(num) { var answer = ..