코딩테스트

· CodingTest
환경 JavaScript 개요 프로그래머스에서 코테하기 git 살펴보기 function solution(answers) { let p1=0 let p2=0 let p3=0 let filt; let res=[]; let arr1=[1, 2, 3, 4, 5] let arr2=[2, 1, 2, 3, 2, 4, 2, 5] let arr3=[3, 3, 1, 1, 2, 2, 4, 4, 5, 5] answers.map((v, i)=>{ if( arr1[i%arr1.length] === v )p1++ if( arr2[i%arr2.length] === v )p2++ if( arr3[i%arr3.length] === v )p3++ }) filt = [p1, p2, p3] filt.filter((el, i)=>{ if(el..
· CodingTest
환경 JavaScript 개요 LeetCode에서 코테하기 문제 간단 요약 1. 사람들에게 사탕이 N 개라면 을 1~N개까지 계속 +1 씩 해서 나눠줍니다. 2. N명 까지 나눠주었는데 사탕이 남았다면 처음 사람에게 또다시 나눠줍니다. 3. 사탕이 다 떨어졌어도 받을 인원이 남았다면 0으로 채워줘야 합니다. -> 추가 설명은 영문 참조 We distribute some number of candies, to a row of n = num_people people in the following way: We then give 1 candy to the first person, 2 candies to the second person, and so on until we give n candies to the ..
· CodingTest
문자열 압축 문제입니다. 'aabccc'를 예로 들면 1개 기준으로 압축할 경우 '2 ab3 c'가 됩니다. 3개 이상부터 문자열이 숫자와 문자열이 되면서 길이가 감소되는 효과를 봅니다. 2개 기준으로 압축한다면 'ababcccc' 의경우 '2ab2cc' 고됩니다. 이런 식으로 3개, 4개 5개.. string.length 길이에 맞춰서 문자열을 압축하고 최소 길이를 리턴하면 됩니다. 위에처럼 안되니까 주의하세요. 풀이 설명 들어갑니다. 코드를 봐주세요. function solution(s) { let resArr = new Set(); // 사이즈별 압축했을때의 문자열 길이를 담는 배열 for (var i=1; i
· CodingTest
멀쩡한 사각형 찾기 문제 최대공약수 풀이법이 핵심입니다. 예시-> 8과 12로 80을 뽑는 식을 풀어봅시다. (최대 공배수 영어로 gcp입니다) 8과 12의 gcp 구하면 4입니다. 도형이 4개가 나옵니다. 이 의미가 뭐냐면 각각 공배수로 나누면 2, 3이나 오는데 2칸과 3칸을 쓴 도형이 4번 나온다는 의미입니다. 만약 6과 2를 했다면 gcp는 2이고 같은 패턴 2개를 사용한 도형이 나옵니다. 여기서도 동일하게 가로, 세로 값을 gcp로 나눠주면 3, 1 짜리 도형이 나오는데 gcp개수만큼 나옵니다. 여기까지 패턴의 개념은 이해하셨으리라 봅니다 근데 문제풀이를 위해서는 못쓰는 사각형 개수를 구해야 합니다. 그럼 1, 3 짜리 도형을 예로 들었을 때 대각선이 그어진다면? 가로 1칸에 세로 3칸짜리 직사..
· CodingTest
문제는 첫 번째 예를 기준으로 설명하자면 n명중에 체육복 없는 애가 lost, 있는 애가 나머지 아이들 , 2벌 가진 사람이 reserve입니다. 그런데 reserve와 lost에 둘다 호명돼 있는 경우 1벌로 칩니다. 그리고 2벌인 경우는 자기 번호 +1, -1 거리로 만 빌려줄 수 있습니다. 그래서 첫 번째 for문에서 lost와 reserve에 다 포함되어있는지 체크해주었습니다. 두 번째 for문에서 +1과 -1 비교로 남은 아이의 체육복을 없는 친구에게 주었습니다. -1을 넣은 이유는 배열 최댓값에 관여하지 않기 위해서입니다. 좀 더 깔끔하게 푸신분들도 있으니까 프로그래머스의 풀이를 참조하는 것도 좋을듯합니다. function solution(n, lost, reserve) { for (let i..
· CodingTest
더 간결할 수 있었지만 한 줄로 하고 싶어서 억지로 한 줄 만들기 했습니다. 문제는 간단합니다. N이 nums.length 즉 마릿수일때 포켓몬을 N/2만큼 가져갈수있고 단 종류별로 하나씩이라서 3번 포켓몬이 3, 3, 3, 3 이렇게 4 마리 있으면 1마리만 가져갈 수 있는 시스템입니다. 즉 중복제거를해서 N/2 값보다 중복제거 값이 작으면 중복제거 값을 출력하고 아니면 N/2 값 출력하는 문제입니다. function solution(nums) { return nums.length/2 < new Set(nums).length? nums.length/2 : Array.from(new Set(nums)).length; } 성실한 코딩하세요.
· CodingTest
N으로 표현입니다. 중복을 제거하는 배열 8개를 set으로 만들어줍니다. 문제에선 N을 8번까지 사용합니다. 그래서 선언하면서 미리 N값을 넣어주는 작업이 필요합니다. 왜냐하면 연산 이외의 n을 사용하는 법이 예를 들어 5가 있으면 55, 555, 5555 같은 개념이 연산 없이 5라는 숫자를 사용하는 법이기 때문에 미리 넣어줍니다. 이후에는 이중 반복문을 통해 값을 구합니다. N을 1번쓴경우 I와 J값이 0, 0 일 때는 for문이 돌지 않기 때문에 arr [i]을 검사합니다. -> arr [0] 처음에 5를 하나 넣어줬습니다. set의 함수 has를 통해 검사합니다. N을 2번 쓴 경우 I값이 올라갈 때부터 for문이 돌아갑니다. arr [0] arr [0] 이렇게 두 개가 사칙연산을 하면서 arr ..
· CodingTest
규칙을 찾았습니다. 첫항에 같은 숫자가 2개 들어가는 것과 1개 들어가는 것 두 번째 항도 동일한 개념입니다. 첫 번째 예를 기준으로 배열에서 [0] 부분은 1, 3, 3 이면 3이 겹치는 상태입니다. 배열에서 [1] 부분은 4, 4, 10 이면 4가 겹치는 상태입니다. 겹치는 부분을 소거해주면 하나의 좌표가 나옵니다. [1, 10] result 값입니다. 이런 식으로 저는 답을 찾았습니다. function solution(v) { let arr1=new Set(), arr2=new Set(); // set은 그냥 array 비슷한 개념인데 es6 익숙해지려고 썼습니다. (여러분도 써보세요) for(let i of v){ arr1.has(i[0])?arr1.delete(i[0]):arr1.add(i[0]..
실행해보고 글로 남기지만 문제가 있다면 언제든 지적 부탁드립니다. 위장 문제 : 의상이 담긴 2차원 배열 clothes가 주어질 때 서로 다른 옷의 조합의 수를 return 하도록 solution 함수를 작성해주세요. 제한사항 clothes의 각 행은 [의상의 이름, 의상의 종류]로 이루어져 있습니다. 스파이가 가진 의상의 수는 1개 이상 30개 이하입니다. 같은 이름을 가진 의상은 존재하지 않습니다. clothes의 모든 원소는 문자열로 이루어져 있습니다. 모든 문자열의 길이는 1 이상 20 이하인 자연수이고 알파벳 소문자 또는 '_' 로만 이루어져 있습니다. 스파이는 하루에 최소 한 개의 의상은 입습니다. 문제를 요약하자면 상의 2개 [빨강 옷, 파랑 옷], 모자 2개 [노란 모자, 초록 모자], 신..
실행해보고 글로 남기지만 문제가 있다면 언제든 지적 부탁드립니다. 전화번호 목록 문제 : 전화번호부 안에 한 번호가 만약 다른 번호의 접두어가 될 경우 false를 반환하고 그런 경우가 없다면 true를 반환하시오 조건 phone_book의 길이는 1 이상 1,000,000 이하입니다. 각 전화번호의 길이는 1 이상 20 이하입니다. 카테고리는 해시였지만 그냥 완성부터 해버리고 싶어서 일단 완성한 코드입니다. 이중 for문을 사용했고 substring으로 잘라낼 때 길이 초과해서 잘라내는 거 try로 다 뭉게 버렸습니다 ㅋㅋ... (효율성 어떻게 통과했니..) class Solution { public boolean solution(String[] phone_book) { boolean answer = ..
tenchoi
'코딩테스트' 태그의 글 목록