본문 바로가기

프로그래머스(Java)

(192)
[프로그래머스] 최빈값 구하기 코드 힌트HashMap 사용하기HashMap은 키-값 쌍으로 데이터를 저장하는 자료구조입니다. 각 키는 유일해야 하며, 값을 저장할 수 있습니다. 빠른 조회가 가능하여 데이터 접근 속도가 빠릅니다.getOrDefault로 카운트하기getOrDefault를 사용하여, 해당 키가 없을 경우 기본값으로 0을 설정합니다.map.getOrDefault(n, 0)은 n의 값이 없을 때 0을 반환합니다.map.keySet() 사용하기map.keySet()은 HashMap의 모든 키를 반환하는 메서드입니다.이 키들을 리스트로 변환하여 사용할 수 있습니다.keySet.sort()하기keySet.sort((o1, o2) -> map.get(o2).compareTo(map.get(o1))) 사용값의 크기를 기준으로 내림차순..
[프로그래머스] 합성수 찾기 코드 힌트4부터 n까지의 숫자에 대해 반복문을 실행합니다.4부터 시작하는 이유: 1은 약수가 없고, 2와 3은 약수가 2개뿐이기 때문에 합성수 조건에 맞지 않습니다.만약 n이 1부터 3 사이의 값이라면, 자연스럽게 반복문이 실행되지 않아 0을 반환하게 됩니다.각 숫자 i에 대해 2부터 i-1까지의 숫자로 나누어 나머지가 0인 경우를 찾습니다.1과 i는 이미 해당 수의 약수이므로 확인할 필요가 없습니다. 정답은 더보기 클릭더보기class Solution { public int solution(int n) { int result = 0; // 합성수의 개수를 저장할 변수 초기화 // 4부터 n까지의 숫자에 대해 반복문을 실행합니다. for (int i..
[프로그래머스] 대충 만든 자판 코드 힌트targets 배열에서 각 target 문자열을 하나씩 추출합니다.for 루프를 사용하여 targets 배열의 각 요소에 접근합니다.각 target 문자열에서 문자를 하나씩 추출합니다.toCharArray() 메소드를 사용하여 문자열을 문자 배열로 변환하고, for-each 루프를 사용하여 각 문자에 접근합니다.keymap 배열에 있는 문자열에 대해 indexOf()를 사용하여 최소 위치를 구합니다.각 keymap 문자열에 대해 indexOf() 메소드를 사용하여 문자의 위치를 찾습니다.찾은 위치 중 최소값을 저장합니다.keymap을 모두 방문했을 때 target 문자열을 완성할 수 없다면 -1을 저장합니다.만약 문자를 keymap에서 찾을 수 없으면 결과 배열에 -1을 저장합니다. 정답은 더보..
[프로그래머스] 외계행성의 나이 코드힌트숫자 0-9를 알파벳 a-j로 매핑하는 문제입니다.숫자 0은 알파벳 a, 숫자 1은 알파벳 b, ..., 숫자 9는 알파벳 j로 변환됩니다.알파벳 문자열을 변수로 만들어 사용합니다."abcdefghij" 문자열을 생성하여 각 자리 숫자를 해당 알파벳으로 변환합니다.나이의 각 자리 숫자를 추출하여 charAt() 메소드를 사용해 알파벳으로 매핑합니다. 정답은 더보기 클릭더보기class Solution { public String solution(int age) { // 숫자 0-9를 알파벳 a-j로 변환하기 위한 문자열 정의 String alpha = "abcdefghij"; // 변환된 결과를 저장할 StringBuilder 객체 생성 ..
[프로그래머스] 9로 나눈 나머지 코드 힌트문자열로 저장된 숫자의 각 자리수의 합을 구하고 % 9를 구하는 문제입니다.주어진 숫자를 문자열로 받아 각 자리 숫자의 합을 구하고, 그 합을 9로 나눈 나머지를 반환합니다.각 자리수를 구하기 위해서는 for문을 돌아 charAt()으로 하나씩 추출하거나 forEach를 활용하여 toCharArray()를 사용하여 문자를 추출합니다.문자열의 각 문자를 순회하면서 해당 문자를 숫자로 변환하여 합산합니다.이를 위해 toCharArray() 메서드를 사용하여 문자열을 문자 배열로 변환하고, for-each 루프를 사용합니다.char타입으로 출력된 문자를 그대로 숫자로 저장하기 위해서는 char - '0'을 사용하는 것이 좋습니다.'0'을 빼는 이유: char 타입은 아스키 코드값으로 저장됩니다. 예를..
[프로그래머스] 분수의 덧셈 코드 힌트분모와 분자의 계산:두 분수의 합을 구하기 위해 공통 분모를 사용합니다.분모는 denom1 * denom2로 계산합니다.분자는 numer1 * denom2 + numer2 * denom1로 계산합니다.기약분수로 만들기:분자와 분모를 최대공약수(GCD)로 나누어 기약분수로 만듭니다.GCD는 유클리드 호제법, 제귀함수, for문을 사용하여 계산합니다.GCD를 구하는 방법은 여기를 클릭하시면 됩니다.결과 배열:결과 배열 result에 기약분수의 분자와 분모를 저장하여 반환합니다. 정답은 더보기 클릭더보기class Solution { public int[] solution(int numer1, int denom1, int numer2, int denom2) { // 두 분모의 곱으로 ..
[프로그래머스] 배열 만들기 3 코드 힌트배열 크기 계산:주어진 구간의 길이를 계산하여 반환할 배열의 총 길이를 구합니다.intervals가 [[s1, e1], [s2, e2]] 형식으로 주어졌을 때, 반환할 배열의 크기는 (e1 - s1 + 1) + (e2 - s2 + 1)입니다.배열에 요소 추가:index 변수를 사용하여 반환할 배열에 순서대로 요소를 추가합니다.첫 번째 구간의 요소들을 추가한 후, 두 번째 구간의 요소들을 추가합니다.// index++를 활용하여 배열에 요소 넣기 예시// 크기가 10인 배열에 10~1까지 숫자 넣기int[] result = new int[10];int index = 0;for (int i = 10; i >= 1; i--) { result[index++] = i;}  정답은 더보기 클릭더보기c..
[프로그래머스] 특별한 이차원 배열 1 코드 힌트2차원 배열 생성:먼저, 주어진 크기 n에 맞는 n x n 크기의 2차원 배열을 생성합니다. 이 배열이 최종적으로 단위 행렬이 될 것입니다.반복문을 이용한 주대각선 설정:두 개의 중첩된 for 루프를 사용하여 배열의 모든 원소를 순회합니다.바깥쪽 루프는 행을, 안쪽 루프는 열을 나타냅니다.행과 열의 인덱스가 같은 경우, 즉 i == j일 때, 해당 위치는 주대각선에 해당합니다. 이 위치에 1을 설정합니다.그 외의 위치는 배열을 생성할 때 기본적으로 0으로 초기화되므로 별도로 설정할 필요가 없습니다.결과 반환:모든 원소를 설정한 후, 생성된 단위 행렬을 반환합니다.이 코드를 통해 주어진 크기 n에 맞는 단위 행렬을 생성할 수 있습니다. 각 원소가 0으로 초기화된 상태에서 주대각선의 원소만 1로 설..