본문 바로가기

반응형

Coding Test/Programmers

(33)
[프로그래머스 코딩테스트 JavaScript] Level 1-33 소수 찾기 [프로그래머스 코딩테스트 JavaScript] Level 1-33 소수 찾기 문제 설명 1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요. 소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다. (1은 소수가 아닙니다.) 제한 조건 n은 2이상 1000000이하의 자연수입니다. 입출력 예 nresult 10 4 5 3 입출력 예 설명 입출력 예 #1 1부터 10 사이의 소수는 [2,3,5,7] 4개가 존재하므로 4를 반환 입출력 예 #2 1부터 5 사이의 소수는 [2,3,5] 3개가 존재하므로 3를 반환 나의 코드 (실패1) 시간초과, 효율성 테스트 실패 이중 for문이라 그런듯 실패 2 -> 7,11,13...등 무한한 소수의 배수는 처리를 못함. f..
[프로그래머스 코딩테스트 JavaScript] Level 1-32 행렬의 덧셈 [프로그래머스 코딩테스트 JavaScript] Level 1-32 행렬의 덧셈 문제 설명 행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요. 제한 조건 행렬 arr1, arr2의 행과 열의 길이는 500을 넘지 않습니다. 입출력 예 arr1arr2return [[1,2],[2,3]] [[3,4],[5,6]] [[4,6],[7,9]] [[1],[2]] [[3],[4]] [[4],[6]] 나의 코드 뭔가 map으로 풀어질 것 같았는데 map 사용 미숙으로 실패 2중 for문으로도 하는데 시간이 한 ~ 참 걸림 let a, b=[]; 의 위치 조정 ..
[프로그래머스 코딩테스트 JavaScript] Level 1-31 직사각형 별찍기 [프로그래머스 코딩테스트 JavaScript] Level 1-31 직사각형 별찍기 문제 설명 이 문제에는 표준 입력으로 두 개의 정수 n과 m이 주어집니다. 별(*) 문자를 이용해 가로의 길이가 n, 세로의 길이가 m인 직사각형 형태를 출력해보세요. 제한 조건 n과 m은 각각 1000 이하인 자연수입니다. 예시 입력 5 3 출력 ***** ***** ***** 나의 코드 처음에 process.stdin.setEncoding('utf8') ; process.stdin.on('data', data=>{} 요 부분을 이해하지 못해서 도움을 구했다 data 를 console.log를 찍어보면 "5 2" 이렇게 뜨는데 요거를 split(' ') 해서 배열로 만든 후 써먹어야 한다! level 1 가장 처음에 있는..
[프로그래머스 코딩테스트 JavaScript] Level 1-30 음양 더하기 문제 설명 어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 return 하도록 solution 함수를 완성해주세요. 제한사항 absolutes의 길이는 1 이상 1,000 이하입니다. absolutes의 모든 수는 각각 1 이상 1,000 이하입니다. signs의 길이는 absolutes의 길이와 같습니다. signs[i] 가 참이면 absolutes[i] 의 실제 정수가 양수임을, 그렇지 않으면 음수임을 의미합니다. 입출력 예 absolutessignsresult [4,7,12] [true,false,true] 9 [1,2,3] [false,false,..
[프로그래머스 코딩테스트 JavaScript] Level 1-29 핸드폰 번호 가리기 [프로그래머스 코딩테스트 JavaScript] Level 1-29 핸드폰 번호 가리기 문제 설명 프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다. 전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요. 제한 조건 s는 길이 4 이상, 20이하인 문자열입니다. 입출력 예 phone_numberreturn "01033334444" "*******4444" "027778888" "*****8888" 나의 코드 다른 분 코드 분명 어제 repeat을 배운거같은데 생각하지도 못하다니,, 진짜 간결하고 깔끔하다 다른 분 코드 2 요런 방법도 있다...
[프로그래머스 코딩테스트 JavaScript] Level 1-28 이상한 문자 만들기 string 짝수/홀수별로 대소문자 바꾸기 문제 설명 문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요. 제한 사항 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다. 첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다. 입출력 예 sreturn "try hello world" "TrY HeLlO WoRlD" 입출력 예 설명 "try hello world"는 세 단어 "try", "hello", "world"로 구성되어 있습니다. 각 단어의 짝수번째 문자를 대문자로, 홀수번째 문자를 소문자로 바꾸면 ..
[프로그래머스 코딩테스트 JavaScript] Level 1-27 내적 [프로그래머스 코딩테스트 JavaScript] Level 1-27 내적 문제 설명 길이가 같은 두 1차원 정수 배열 a, b가 매개변수로 주어집니다. a와 b의 내적을 return 하도록 solution 함수를 완성해주세요. 이때, a와 b의 내적은 a[0]*b[0] + a[1]*b[1] + ... + a[n-1]*b[n-1] 입니다. (n은 a, b의 길이) 제한사항 a, b의 길이는 1 이상 1,000 이하입니다. a, b의 모든 수는 -1,000 이상 1,000 이하입니다. 입출력 예 abresult [1,2,3,4] [-3,-1,0,2] 3 [-1,0,1] [1,0,-1] -2 입출력 예 설명 입출력 예 #1 a와 b의 내적은 1*(-3) + 2*(-1) + 3*0 + 4*2 = 3 입니다. 입출..
[프로그래머스 코딩테스트 JavaScript] Level 1-26 폰켓몬 [프로그래머스 코딩테스트 JavaScript] Level 1-26 폰켓몬 문제 설명 당신은 폰켓몬을 잡기 위한 오랜 여행 끝에, 홍 박사님의 연구실에 도착했습니다. 홍 박사님은 당신에게 자신의 연구실에 있는 총 N 마리의 폰켓몬 중에서 N/2마리를 가져가도 좋다고 했습니다. 홍 박사님 연구실의 폰켓몬은 종류에 따라 번호를 붙여 구분합니다. 따라서 같은 종류의 폰켓몬은 같은 번호를 가지고 있습니다. 예를 들어 연구실에 총 4마리의 폰켓몬이 있고, 각 폰켓몬의 종류 번호가 [3번, 1번, 2번, 3번]이라면 이는 3번 폰켓몬 두 마리, 1번 폰켓몬 한 마리, 2번 폰켓몬 한 마리가 있음을 나타냅니다. 이때, 4마리의 폰켓몬 중 2마리를 고르는 방법은 다음과 같이 6가지가 있습니다. 첫 번째(3번), 두 번째..
[프로그래머스 코딩테스트 JavaScript] Level 1-25 약수의 개수와 덧셈 [프로그래머스 코딩테스트 JavaScript] Level 1-25 약수의 개수와 덧셈 문제 설명 두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요. 제한사항 1 ≤ left ≤ right ≤ 1,000 입출력 예 leftrightresult 13 17 43 24 27 52 입출력 예 설명 입출력 예 #1 다음 표는 13부터 17까지의 수들의 약수를 모두 나타낸 것입니다. 수약수약수의 개수 13 1, 13 2 14 1, 2, 7, 14 4 15 1, 3, 5, 15 4 16 1, 2, 4, 8, 16 5 17 1, 17 2 따라..
[프로그래머스 코딩테스트 JavaScript] Level 1-24 정수 제곱근 판별 [프로그래머스 코딩테스트 JavaScript] Level 1-24 정수 제곱근 판별 문제 설명 임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다. n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요. 제한 사항 n은 1이상, 50000000000000 이하인 양의 정수입니다. 입출력 예 nreturn 121 144 3 -1 입출력 예 설명 입출력 예#1 121은 양의 정수 11의 제곱이므로, (11+1)를 제곱한 144를 리턴합니다. 입출력 예#2 3은 양의 정수의 제곱이 아니므로, -1을 리턴합니다. 나의 코드 어제 isInteger 를 알게되서 여기서 유용하게 썼다. N = n의 제곱..
[프로그래머스 코딩테스트 JavaScript] Level 1-23 수박수박수박수박수박수 문제 설명 길이가 n이고, "수박수박수박수...."와 같은 패턴을 유지하는 문자열을 리턴하는 함수, solution을 완성하세요. 예를들어 n이 4이면 "수박수박"을 리턴하고 3이라면 "수박수"를 리턴하면 됩니다. 제한 조건 n은 길이 10,000이하인 자연수입니다. 입출력 예 nreturn 3 "수박수" 4 "수박수박" 나의 코드 제출 전 하드 코딩으로 만든걸 조금 줄여봤다. 그래도 왠지 무슨 공식이 있을 것 같은데 .... 코드가 짧으면 점수가 높나 싶었는데 1 점 받았ㄷ ㅏ. 다른 분들 코드 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ wow.. 코드 2 repeat 이라는 함수가 있다니. ! 코드 3 요 코드도 잘 만들었다.
[프로그래머스 코딩테스트 JavaScript] Level 1-22 문자열 내림차순으로 배치하기 [프로그래머스 코딩테스트 JavaScript] Level 1-22 문자열 내림차순으로 배치하기 문제 설명 문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요. s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다. 제한 사항 str은 길이 1 이상인 문자열입니다. 입출력 예 sreturn "Zbcdefg" 나의 코드 charCodeAt에 꽃혀서 이걸로 풀려다가 시간이 엄청 오래걸림 결국 실패하고 함수사용함 split('')으로 string을 배열로 만들어서 sort() 오름차순 reverse() 내림차순 -> join('')으로 배열 -> stirng으로 변환
[프로그래머스 코딩테스트 JavaScript] Level 1-21 정수 내림차순으로 배치하기 문제 설명 함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다. 제한 조건 n은 1이상 8000000000 이하인 자연수입니다. 입출력 예 nreturn 118372 나의 답 각 수를 배열로 ['5','4','3','2','1'] 만들고 sort로 정렬 한 뒤 엄청 고민했다. reduce를 사용해서 문자열을 그대로 붙여주고 맨 앞에 + 로 숫자로 바꿔줫다. 다른 분들의 풀이 문제 엄청 고민하면서 split처럼 무언가로 배열을 합치는 기능이 없나 생각했는데 요기 쓰인 .join() 이 그 기능을 하는걸 알게되었다. 숫자를 요소 하나하나 string 배열로 담는 2가지..
[프로그래머스 코딩테스트 JavaScript] Level 1-20 나누어 떨어지는 숫자 배열 [프로그래머스 코딩테스트 JavaScript] Level 1-20 나누어 떨어지는 숫자 배열 문제 설명 array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요. divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요. 제한사항 arr은 자연수를 담은 배열입니다. 정수 i, j에 대해 i ≠ j 이면 arr[i] ≠ arr[j] 입니다. divisor는 자연수입니다. array는 길이 1 이상인 배열입니다. 입출력 예 arrdivisorreturn [5, 9, 7, 10] 5 [5, 10] [2, 36, 1, 3] 1 [1, 2, 3, 36] [3,2,6] 10 [-1] 입출력 예..
[프로그래머스 코딩테스트 JavaScript] Level 1-19 약수의 합 [프로그래머스 코딩테스트 JavaScript] Level 1-19 약수의 합 문제 설명 정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요. 제한 사항 n은 0 이상 3000이하인 정수입니다. 입출력 예 nreturn 12 28 5 6 입출력 예 설명 입출력 예 #1 12의 약수는 1, 2, 3, 4, 6, 12입니다. 이를 모두 더하면 28입니다. 입출력 예 #2 5의 약수는 1, 5입니다. 이를 모두 더하면 6입니다. 나의 답 실패1 저번 코딩테스트에서 배운 reduce를 써봤다. 근데 쓸 때마다 =>{} 요게 습관되어서 계속 여기서 오류가 난다. 런타임 에러가 떴다. 성공 for 구문 때문인가 싶어서 n/2값 ~ n-1값까지 for구문 돌릴 필요가 없으서 ..
[프로그래머스 코딩테스트 JavaScript] Level 1-18 문자열 내 p와 y의 개수 문제 설명 대문자와 소문자가 섞여있는 문자열 s가 주어집니다. s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 return 하는 solution를 완성하세요. 'p', 'y' 모두 하나도 없는 경우는 항상 True를 리턴합니다. 단, 개수를 비교할 때 대문자와 소문자는 구별하지 않습니다. 예를 들어 s가 "pPoooyY"면 true를 return하고 "Pyy"라면 false를 return합니다. 제한사항 문자열 s의 길이 : 50 이하의 자연수 문자열 s는 알파벳으로만 이루어져 있습니다. 입출력 예 sanswer "pPoooyY" true "Pyy" false 입출력 예 설명 입출력 예 #1 'p'의 개수 2개, 'y'의 개수 2개로 같으므로 true를 return 합니..
[프로그래머스 코딩테스트 JavaScript] Level 1-17 최대공약수와 최소공배수 [프로그래머스 코딩테스트 JavaScript] Level 1-17 최대공약수와 최소공배수 문제 설명 두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의 최대공약수는 3, 최소공배수는 12이므로 solution(3, 12)는 [3, 12]를 반환해야 합니다. 제한 사항 두 수는 1이상 1000000이하의 자연수입니다. 입출력 예 nmreturn 3 12 [3, 12] 2 5 [1, 10] 입출력 예 설명 입출력 예 #1 위의 설명과 같습니다. 입출력 예 #2 자연수 2와 5의 최대공약수는 1, 최소공배수는 10이므로 [1, 10]을 리턴해야 합니다. 나의 ..
[프로그래머스 코딩테스트 JavaScript] Level 1-16 문자열 다루기 기본 [프로그래머스 코딩테스트 JavaScript] Level 1-16 문자열 다루기 기본 문제 설명 문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다. 제한 사항 s는 길이 1 이상, 길이 8 이하인 문자열입니다. 입출력 예 sreturn "a234" false "1234" true 나의 답 (실패) s = 문자열 의 길이 4or6 이라면, +s = 문자열을 숫자로 만든게 Number(s) 숫자로 만든거라면 true 를 return 해라 => 테스트 중 여러개 실패. 요것도 같은 원리여서 그런지 실패.. 세번쨰 실패 드디어 성공 ! s 길이가 4or6이 아..
[프로그래머스 코딩테스트 JavaScript] Level 1-15 문자열을 정수로 바꾸기 [프로그래머스 코딩테스트 JavaScript] Level 1-15 문자열을 정수로 바꾸기 문제 설명 문자열 s를 숫자로 변환한 결과를 반환하는 함수, solution을 완성하세요. 제한 조건 s의 길이는 1 이상 5이하입니다. s의 맨앞에는 부호(+, -)가 올 수 있습니다. s는 부호와 숫자로만 이루어져있습니다. s는 "0"으로 시작하지 않습니다. 입출력 예 예를들어 str이 "1234"이면 1234를 반환하고, "-1234"이면 -1234를 반환하면 됩니다. str은 부호(+,-)와 숫자로만 구성되어 있고, 잘못된 값이 입력되는 경우는 없습니다. 나의 답 어제 프로그래머스 어디선가 배운 parseInt 를 썼다. 다른 분들의 답 나누기 더하기 사칙연산으로 자동으로 parsing이 되게 만듬 ! 사친연..
[프로그래머스 코딩테스트 JavaScript] Level 1-14. 제일 작은 수 제거하기 문제 설명 정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10]면 [-1]을 리턴 합니다. 제한 조건 arr은 길이 1 이상인 배열입니다. 인덱스 i, j에 대해 i ≠ j이면 arr[i] ≠ arr[j] 입니다. 입출력 예 arrreturn [4,3,2,1] [4,3,2] [10] [-1] 처음 답 (실패) 요렇게 적었는데 테스트는 통과하는데 제출 채점하면 다 실패로 떴다. 질문하기를 보니깐 배열의 순서가 바뀌면 안된다고.......... 실패2 결국 이것도 배열 순서가 바뀌어서 탈락 성공!..
[프로그래머스 코딩테스트 JavaScript] Level1-13. 자연수 뒤집어 배열로 만들기 문제 설명 자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다. 제한 조건 n은 10,000,000,000이하인 자연수입니다. 입출력 예 nreturn 12345 [5,4,3,2,1] 나의 답 뭔가 너무 복잡하다ㅠㅠ -> ['5','4','3','2','1'] 여기서 숫자인 배열로만 추출하는 함수를 알면 좋을텐데......... 찾앗다! map(Number)를 쓰면 ['5,'4','3','2','1'] -> [5,4,3,2,1]이 된다! 다른 분 문자풀이와 숫자풀이 두개를 하심 숫자 풀이는 진짜 생각지도 못한 방법이라 신기하다.... while(n>0) 동안 arr에 n나누기 10의 나머지값을 push 한다. (1의자..
[프로그래머스 코딩테스트 JavaScript] Level1-12. 두 정수 사이의 합 문제 설명 두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요. 예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다. 제한 조건 a와 b가 같은 경우는 둘 중 아무 수나 리턴하세요. a와 b는 -10,000,000 이상 10,000,000 이하인 정수입니다. a와 b의 대소관계는 정해져있지 않습니다. 입출력 예 abreturn 3 5 12 3 3 3 5 3 12 나의 답 Math.abs라는 자연수로 만드는 함수를 찾아서 만들었다. 가우스의 답 ㅎ... Math.abs(b-a)+1 으로 a,b사이의 개수 를 a+b의 합과 곱해서 2로 나눴다. 가우스의 재림.. 따라 쳐봤다. 이렇게 간단할수가........
[프로그래머스 코딩테스트 JavaScript] Level1-11. 자릿수 더하기 자릿수 더하기 문제 설명 자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요. 예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다. 제한사항 N의 범위 : 100,000,000 이하의 자연수 입출력 예 Nanswer 123 6 987 24 입출력 예 설명 입출력 예 #1 문제의 예시와 같습니다. 입출력 예 #2 9 + 8 + 7 = 24이므로 24를 return 하면 됩니다. 나의 답 다른 분의 답 String(n) 대신 (n+"") 으로 문자열로 만들었다. 그리고 .split("")으로 [ '1', '0', '0'] 배열로 만들고 reduce를 사용해서 모두 더함. parseInt는 문자열-> 숫자로 만들기 let n ..
[프로그래머스 코딩테스트 JavaScript] Level1-10. 하샤드 수 [프로그래머스 코딩테스트 JavaScript] Level1-10. 하샤드 수 문제 설명 양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요. 제한 조건 x는 1 이상, 10000 이하인 정수입니다. 입출력 예 arrreturn 10 true 12 true 11 false 13 false 입출력 예 설명 입출력 예 #1 10의 모든 자릿수의 합은 1입니다. 10은 1로 나누어 떨어지므로 10은 하샤드 수입니다. 입출력 예 #2 12의 모든 자릿수의 합은 3입니다. 12는 3으로 나누어 ..

반응형