[프로그래머스 JAVA] 12900. 2 x n 타일링
·
코딩테스트/프로그래머스
문제 링크 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr접근 방법2 x n 크기의 직사각형을 1 x 2 타일로 채우는 경우의 수를 구해야 합니다.처음에는 마지막에 놓는 타일의 방향을 기준으로 경우를 나누었습니다.마지막에 가로 타일을 놓는 경우와 세로 타일을 놓는 경우를 각각 다른 상태로 관리합니다.tile[i][0]은 가로 타일로 끝나는 경우의 수입니다.가로 타일은 위아래로 2개가 함께 놓여야 하므로, 이전에 i - 2 위치까지 채운 상태에서 이어질 수 있습니다.tile[i][1]은 세로 타일로 끝나는 경우의 수입니다.세로 타일은 한 칸만 차지하므로, 이전에 i - 1 위치까지 채운 상태에서 이어질 수 있습니다..
[프로그래머스 JAVA] 42898. 등굣길
·
코딩테스트/프로그래머스
문제 링크 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr접근 방법집에서 학교까지 오른쪽과 아래쪽으로만 이동할 수 있으므로, 각 칸까지 도달하는 최단 경로의 개수를 누적하는 방식으로 해결합니다.물웅덩이가 있는 위치는 puddle 배열에 따로 표시해두고, 해당 위치로는 경로를 더하지 않도록 처리합니다.arr[i][j]에는 해당 위치까지 올 수 있는 경로의 개수를 저장합니다.왼쪽에서 현재 칸으로 이동하는 경우와, 현재 칸에서 아래쪽으로 이동하는 경우를 각각 계산하며 값을 누적합니다.소스 코드import java.util.*;class Solution { public int solution(int m, int n..
[프로그래머스 JAVA] 150368. 이모티콘 할인행사
·
코딩테스트/프로그래머스
문제 링크 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr접근 방법각 이모티콘은 10%, 20%, 30%, 40% 중 하나의 할인율을 가질 수 있습니다.이모티콘의 개수가 최대 7개이므로 가능한 할인 조합의 수는 최대 4^7 = 16,384개입니다.따라서 모든 할인율 조합을 dfs로 확인해도 충분히 해결할 수 있습니다.소스 코드class Solution { int maxSum = 0, maxPlusUser = 0; int[] userSum; void recursive(int idx, int[][] users, int[] emoticons) { if (emoticons.length == ..
[프로그래머스 JAVA] 258707. n + 1 카드게임
·
코딩테스트/프로그래머스
문제 링크 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr접근 방법카드 x가 있을 때 필요한 짝은 항상 n + 1 - x로 정해집니다.따라서 모든 조합을 탐색하지 않고, HashSet을 이용해 필요한 카드가 있는지만 확인하면 됩니다.소스 코드import java.util.*;class Solution { int target; private boolean usePair(Set set1, Set set2) { int a = -1, b = -1; for (int card : set1) { b = target - card; if (set2.con..
[프로그래머스 JAVA] 17686. [3차] 파일명 정렬
·
코딩테스트/프로그래머스
문제 링크 코딩테스트 연습 - [3차] 파일명 정렬알고리즘 문제 연습 카카오톡 친구해요! 프로그래머스 교육 카카오 채널을 만들었어요. 여기를 눌러, 친구 추가를 해주세요. 신규 교육 과정 소식은 물론 다양한 이벤트 소식을 가장 먼저 알려school.programmers.co.kr접근 방법파일명을 HEAD, NUMBER로 나눈 뒤 정렬 기준에 맞게 정렬합니다.HEAD를 기준으로 사전순 정렬합니다. 이때 대소문자는 구분하지 않습니다.HEAD가 같다면 NUMBER를 숫자로 변환하여 오름차순 정렬합니다.HEAD와 NUMBER가 모두 같다면 입력 순서를 유지합니다.소스 코드import java.util.*;class Solution { class Node implements Comparable { ..
[프로그래머스 JAVA] 68936. 쿼드압축 후 개수 세기
·
코딩테스트/프로그래머스
문제 링크 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr접근 방법주어진 2차원 배열을 하나의 정사각형 영역으로 보고, 현재 영역이 모두 같은 값으로 이루어져 있는지 확인합니다.만약 현재 영역 안에 다른 값이 섞여 있다면 영역을 4개의 정사각형으로 나누고, 각 영역에 대해 같은 과정을 재귀적으로 반복합니다.소스 코드class Solution { int[] cnt = {0, 0}; int[][] board; void recursive(int y, int x, int size) { if (size == 1) { cnt[board[y][x]]++; r..
[CS] 단락 평가
·
CS
단락 평가 (Short-Circuit Evaluation)단락 평가는 논리 연산에서 전체 결과가 이미 결정된 경우, 나머지 조건을 평가하지 않는 방식입니다.주로 &&(AND), ||(OR) 연산에서 사용되며, 불필요한 연산을 줄이고 안전한 코드 실행을 보장하는 역할을 합니다.단락 평가 동작AND 연산 (&&)첫 번째 조건이 false이면 전체 결과는 false이므로, 뒤의 조건은 평가하지 않습니다.A && B→ A가 false이면 B는 실행되지 않음OR 연산 (||)첫 번째 조건이 true이면 전체 결과는 true이므로, 뒤의 조건은 평가하지 않습니다.A || B→ A가 true이면 B는 실행되지 않음단락 평가 예시int[] arr = new int[5];int j = 10;if (j 단락 평가 활용배열..
[백준 JAVA] 1025. 제곱수 찾기
·
코딩테스트/백준
문제 링크https://www.acmicpc.net/problem/1025접근 방법이 문제는 모든 시작 위치에서, 모든 방향과 간격으로 이동하면서 만들 수 있는 수를 전부 확인해야 합니다.시작 좌표를 (i, j)로 정하고, 행 변화량 dy, 열 변화량 dx를 정한 뒤 현재 위치의 숫자를 이어 붙여 하나의 수를 만듭니다.이때 dy, dx는 음수, 양수, 0 모두 가능하며, (0, 0)은 제외해야 합니다.숫자를 한 자리씩 이어 붙일 때마다 매번 완전 제곱수인지 확인해야 합니다.소스 코드import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.StringTokenizer;import java.io.IOException;pub..