Super Kawaii Cute Cat Kaoani
본문 바로가기
728x90

{Algortihm}/Java23

[프로그래머스] 거리두기 확인하기 - JAVA 응시자들이 대기실에서 거리두기를 지키고 있는지 확인하는 문제. char[][] 2차원 배열과 방향 배열(dx/dy)을 다루는 대표적인 격자 탐색 문제였다. 레벨 2라서 그런지 확실히 어려웠다... 카카오 문제라는데 이걸 어떻게 가서 푸는거지 ㅋ큐 1. 문제 설명5개의 대기실이 주어진다. 각 대기실은 5×5 격자이고, 각 칸은 다음 셋 중 하나다.P : 응시자O : 빈 테이블X : 파티션거리두기 규칙은 이렇다.두 응시자 사이의 맨해튼 거리가 2 이하면 거리두기를 지키지 않은 것이다.단, 두 응시자 사이를 파티션(X)이 막고 있으면 지킨 것으로 본다. 맨해튼 거리 = |행 차이| + |열 차이|. 즉 상하좌우로 몇 칸 떨어졌는지. 대기실별로 모든 응시자가 거리두기를 지키면 1, 한 명이라도 어기면 0.. 2026. 8. 13.
[프로그래머스] 삼각 달팽이 - JAVA https://school.programmers.co.kr/learn/courses/30/lessons/68645 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 삼각형을 달팽이처럼 뱅글뱅글 채우는 문제. 처음엔 방향마다 while문을 따로 두는 방식으로 풀었고, 이후에 방향 벡터(dx/dy)로 while문 하나에 몰아넣는 방식으로 다시 풀어봤다. 두 풀이를 나란히 정리하면서, 각각에서 내가 헷갈렸던 부분까지 함께 남긴다.문제 요약 정수 n이 주어지면, n줄짜리 삼각형을 만든다.1부터 시작하는 숫자를 바깥에서 안쪽으로 달팽이처럼 채운다.채운 결과를 1차원 배열로 반환한다.예를 들어 n = 4면 삼각형은 이렇게 .. 2026. 8. 11.
[프로그래머스] 교점에 별 만들기 - JAVA https://school.programmers.co.kr/learn/courses/30/lessons/87377 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 설명 Ax + By + C = 0으로 표현할 수 있는 n개의 직선이 주어질 때, 이 직선의 교점 중 정수 좌표에 별을 그리려 합니다. 예를 들어, 다음과 같은 직선 5개를 2x - y + 4 = 0 -2x - y + 4 = 0 -y + 1 = 0 5x - 8y - 12 = 0 5x + 8y + 12 = 0 좌표 평면 위에 그리면 아래 그림과 같습니다 이때, 모든 교점의 좌표는 (4, 1), (4, -4), (-4, -4), (-4, 1), .. 2026. 8. 10.
[JAVA] 스트림 문법 정리 자바 Stream 문법 정리스트림 쓸 때마다 문법이 헷갈려서 매번 검색하게 된다.사실 스트림 문법 잘 몰랐는데 프로그래머스에서 다른 사람들 풀이 볼때마다스트림이 등장해서 나도 공부해야겠다고 생각했다. (뭔가 멋있음 스트림으로 푸는 사람들) 1. 스트림스트림은 리스트나 배열 같은 데이터를 하나씩 처리하는 도구다. 원래 for문으로 하던 걸 더 짧고 읽기 쉽게 쓸 수 있다.먼저 for문과 비교해보자. "리스트에서 2보다 큰 수만 골라서 10배 하기"를 예전 방식으로 하면 이렇다.List numbers = List.of(1, 2, 3, 4, 5);List result = new ArrayList();for (int n : numbers) { if (n > 2) { // 조건에.. 2026. 8. 8.
[프로그래머스] 주사위 게임 3 - JAVA 숫자 4개의 등장 횟수, 즉 빈도수를 Map으로 세고 서로 다른 숫자의 개수는 map.size()를 사용해서 나눈다는 것이 문제의 키포인트입니다. map.size()의미14개 다 같음23+1 또는 2+232+1+14전부 다름 문제 풀이 import java.util.*;class Solution { public int solution(int a, int b, int c, int d) { int answer = 0; int[] arr= {a,b,c,d}; Arrays.sort(arr); // 일단 배열 정렬한 다음에 진행 Map map = new HashMap(); //빈도수 세기 .. 2026. 3. 5.
[백준] 2745번 진법 변환 - JAVA ✍️풀이방식 진법 변환 과정을 이해하는 것이 중요한 문제 예제 입력 예시를 보면 다음과 같다 zzzzz에서 z는 35이다. 따라서 두번째 자리수는 36진법이기 때문에 35*36으로 표현되는 것이다. 🖥️문제풀이 import java.io.*;import java.util.*;public class Main{ public static void main(String[] args) { Scanner sc = new Scanner(System.in); char[] text = sc.next().toCharArray(); // 한글자씩 입력 받기 int N = sc.nextInt(); // N 전체입력 int A[] = new int[text.leng.. 2026. 1. 9.
[백준] 10988번 팰린드롬 - JAVA ✍️풀이방식 문자열을 비교하는 방식 즉 charAt() 활용 문제이다. charAt()은 문자열(String)에서 특정 위치의 문자(char)를 꺼내는 메서드 문자 = 문자열.charAt(인덱스); import java.util.*;import java.io.*; public class Main { public static void main(String[] args) throws IOException { // 입력을 받기 위한 BufferedReader 생성 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String word = br.readLine(); // 문자.. 2025. 9. 23.
[백준] 2178번 미로 탐색하기 - JAVA ✍️풀이방식 1. 문제 분석 미로의 각 칸에 들어 있는 숫자 중 1은 이동할 수 있는 칸, 0은 이동할 수 없는 칸. 한 칸에서 다른 칸으로 이동할 때는 서로 인접한 칸으로만 이동할 수 있다. 이동한 칸을 셀 때는 시작 위치와 도착 위치를 포함한다. 즉 (1,1)에서 (4,6)으로 이동하려면 총 15칸을 지나가야한다. 2. 풀이 과정 현재 N,M의 범위가 2이상 100이하로 작기 때문에 시간 복잡도는 따로 고려하지 않아도 된다. 지나야하는 칸 수의 최솟값을 찾는 것은 완전 탐색을 진행하며 몇 번째 깊이에서 원하는 값을 찾을 수 있는지를 구하는 것과 동일. 따라서 BFS를 사용해 최초로 도달했을 때 깊이를 출력하면 문제를 해결할 수 있다. 🖥️문제풀이 방향 벡터 정.. 2025. 9. 16.
[백준] 17136번 색종이 붙이기 - JAVA ✍️풀이방식 1. 문제 분석 1이 있는 칸에만 색종이를 붙여야 하고 칸에 딱 맞게 붙여야 하는 것. 각 종류의 색종이를 5개씩 가지고 있기 때문에 한 종류 마다 5개까지 사용할 수 있다. 즉 전체 색종이 개수는 25개이다. 색종이를 붙일수 있는 경우의 수를 백트래킹 알고리즘을 이용하여 구하면 된다. 지금까지 연습했던 문제들 중에 가장 난이도가 높은 문제였던 것 같다... 2. 풀이 과정 1. 색종이를 붙일 수 있는 1번째 위치를 찾는다. 2. 탐색 위치는 왼쪽 위에서 시작하여 오른쪽으로 이동하고, 오른쪽 끝에 도달하면 한 줄 아래로내려가서 다시 왼쪽부터 이동하는 방식으로 진행한다. (가지치기를 극대화 하기 위해서 큰 색종이부터 탐색한다) 3. 현재 선택한 위치에 가지고 있는 색종이.. 2025. 9. 15.
728x90