코딩테스트 30

프로그래머스 - 추억 점수

photo 배열 안에 인물이 들어있는지 확인하기 위해서 name 배열 indexOf를 사용하였고, 만약 있다면 name 배열의 인덱스를 yearning 배열에 맞추면 되기 때문에 yearning의 인덱스를 name.indexOf()를 주었습니다. function solution(name, yearning, photo) { var answer = new Array(photo.length).fill(0); for(let i = 0; i -1) answer[i] += yearning[name.indexOf(person)]; } } return answer; } 결과는 정답! 다른 분의 코드를 보니까 map을 사용한 것도 있던데 저는 아직 map을 완벽하게 이해하지는 못 했기 때문에 다음 번에 map에 대한 지..

코딩테스트 2024.03.08

프로그래머스 - 문자열 다루기 기본

문자열의 길이는 간단하게 비교할 수 있지만 문자열이 전부 숫자로 이루어져 있는지는 어떻게 할 지 고민을 했습니다.. 그러던 중 정규식을 사용하면 어떨까? 라는 생각이 들었습니다. * 정규식은 정해진 패턴과 일치하는 문자열을 찾을 때 사용하는 것입니다. 저는 숫자인지를 확인하는 정규식을 사용했습니다. ^[0-9]*$ 제가 사용한 정규식입니다. 이것을 한 번 해석해보겠습니다! ^는 시작에 포함되는지 $는 끝에 포함되는지를 의미합니다! []는 괄호 사이에 있는 문자를 포함한다는 의미, 0-9는 0부터 9까지, *은 없거나 있거나 입니다! 정규식을 사용해 작성한 코드는 class Solution { public boolean solution(String s) { return (s.length() == 4 || ..

코딩테스트 2024.03.07

코딩테스트 - 없는 숫자 더하기

오늘의 문제! 제가 문제를 보고 생각한 방법은 0부터 9까지의 숫자가 든 문자열을 선언한 후 numbers의 각 숫자가 문자열에 포함되어 있는지 여부를 확인한 후 포함되어 있다면 answer에 더한 후 45에서 answer을 빼는 방법을 생각했습니다. class Solution { public int solution(int[] numbers) { int answer = 0; String str = "0123456789"; for(int i = 0; i 좀 더 쉽고 간결하게 코드를 짤 수도 있구나라는 생각이 드는... 언제나 더 쉬운 방법이 있으니까!

코딩테스트 2024.03.06

프로그래머스 - 푸드 파이트 대회

오늘의 문제는 푸드 파이트 대회입니다. 문제를 보고 필요한 것이 무언인지 생각해 보았습니다. 먼저 음식이 2명이 먹을 수 있어야 하고, 반올림이 아닌 소수점을 제거해야합니다. 다음은 한 선수의 음식을 배치하게 되면 다음 선수의 음식은 처음 선수의 문자열을 뒤집으면 됩니다! function solution(food) { var answer = ''; for(let i = 0; i 0){ for(let j = 0; j "abcabc"가 리턴됩니다. 따라서 i를 String으로 형 변환 시킨 후 Math.floor를 사용해 몇 번 반복할 지 넣어주는 방식입니다. 제가 if와 중첩 for문을 사용했던 것보다 좀 더 간결하고 효율적인 코드인 것 같습니다. 첫 번째 음식 정렬을 구한 후 [...res].revers..

코딩테스트 2024.03.05

프로그래머스 - 다음 큰 숫자

Integer.toBinaryString을 사용해 1의 개수를 구해놓고 n++을 하면서 1의 개수가 같은 수를 구하는 방법을 사용했습니다! class Solution { public int solution(int n) { int answer = 0, cnt = 0, binN = n + 1, binCnt = 0; String strN[] = Integer.toBinaryString(n).split(""); for(String str : strN) if(str.equals("1")) cnt++; while(true){ binCnt = 0; String strBin[] = Integer.toBinaryString(binN).split(""); for(String str : strBin) if(str.equal..

코딩테스트 2023.12.31

프로그래머스 - 소인수분해

다들 소인수분해 어떻게 하시나요 저는 이렇게 합니다!! 여기서 아이디어를 얻었는데요! 2부터 시작해 나누어 떨어지지 않을 때까지 나누다보면 다음 소인수로 넘어갑니다 for문을 사용해 2부터 n까지 돌려주고, 그 안에서 while문으로 나누어 떨어지는 동안만 반복하게 하는 것입니다! 바로 코드 진행시켜! import java.util.*; class Solution { public int[] solution(int n) { ArrayList list = new ArrayList(); for(int i = 2; ii).toArray(); } } while문은 참인 동안 반복문을 수행합니다! 만약 중복인 값이 없다면 list에 넣어줍니다! 계속 n을 i로 나누어주다 보면 제가 구하는 방식처럼 어느 순간 나누어..

코딩테스트 2023.12.30

프로그래머스 - 배열의 길이를 2의 거듭제곱으로 만들기

처음 생각한 방법은 ArrayList를 사용해 arr의 값을 옮겨준 다음 list의 길이가 2의 거듭제곱보다 작을 때의 거듭제곱을 구해 list에 거듭제곱이 될 때까지 0을 넣는 방법이었습니다! 처음에 ArrayList에 arr의 값을 옮겨주고~ ArrayList list = new ArrayList(); for(int n : arr) list.add(n); Math.pow()를 사용해 2의 거듭제곱과 list의 길이를 비교했습니다! int res = 0; for(int i = 0; i

코딩테스트 2023.12.21

프로그래머스 - 가격대 별 상품 개수 구하기

가격대를 0, 10000, 20000과 같이 표현하기 때문에 원래 가격 뒤 4자리 숫자를 없애면 되겠다고 생각했기 때문에 TRUNCATE를 사용했습니다! SELECT TRUNCATE(PRICE, -4) AS 'PRICE_GROUP', COUNT(PRODUCT_ID) AS 'PRODUCTS' FROM PRODUCT 그 다음! 가격대 별로 묶어줘야하기 때문에 GROUP BY PRICE_GROUP 마지막으로 오름차순 정리까지 해주면~ ORDER BY PRICE_GROUP 최종 코드! SELECT TRUNCATE(PRICE, -4) AS PRICE_GROUP, COUNT(PRODUCT_ID) AS PRODUCTS FROM PRODUCT GROUP BY PRICE_GROUP ORDER BY PRICE_GROUP ..

코딩테스트 2023.12.20