728x90
반응형

PCCP 26

[프로그래머스 JAVA] 3진법 뒤집기

🔗 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/68935📌 문제 요약자연수 n이 주어졌을 때,이를 3진법 문자열로 변환하고,해당 문자열을 뒤집은 후,다시 10진법 정수로 변환한 결과를 반환해야 합니다.예시:n (10진수)3진법 변환뒤집은 3진법결과 (10진수)451200002171251112222111229💻 전체 코드class Solution { public int solution(int n) { String ternary = Integer.toString(n, 3); // 1. 3진법 변환 String reversed = new StringBuilder(ternary).r..

[프로그래머스 JAVA] 문자열 압축

문제 링크 🔗✅ 1. 문제 핵심 요약문자열을 일정 길이로 잘라서, 같은 문자열이 반복되면 개수와 함께 압축하는 방식으로 가장 짧은 압축 문자열 길이를 구하는 문제입니다.핵심 포인트는 **"1개 이상 단위로 잘라서 압축"**할 수 있다는 점이며, 모든 단위의 길이를 고려하여 가장 짧은 경우를 찾아야 합니다.⚠ 2. 주의 사항문자열은 반드시 앞에서부터 순차적으로 잘라야 하며, 중간에서 임의 분할은 허용되지 않습니다.압축 단위 길이는 1부터 s.length() / 2까지만 시도하면 충분합니다.반복 횟수 1은 생략합니다. 즉, "1a"가 아닌 "a"로 표현됩니다.남는 문자열은 압축하지 않고 결과에 그대로 붙입니다.🔄 3. 알고리즘 로직 (슈도코드)min_length = 문자열 길이for 압축 단위 from ..

[프로그래머스 JAVA] 완전범죄

문제 링크 → 완전범죄 문제 바로가기🗝️ 1. 문제 요약A, B 도둑이 모든 물건을 훔쳐야 함각 물건은 A 또는 B 중 하나만 훔칠 수 있음A 도둑 흔적 누적합 nB 도둑 흔적 누적합 m조건을 지키며 A의 흔적 누적합을 최소화해야 함조건 만족 불가 시 -1 반환⚠️ 2. 입출력 예제 분석입력info = [[1, 2], [2, 3], [2, 1]];n = 4;m = 4;📊 3. DP 상태 저장표 시뮬레이션dp[a][b] = A도둑 누적 흔적 a, B도둑 누적 흔적 b일 때 도달 가능 여부를 의미하며,A 도둑 누적 흔적의 최소합을 추적합니다.n = 4, m = 4 → 배열 크기는 4 x 4✅ 초기 상태dp[0][0] = 0 (시작 상태)🧩 1단계: 첫 번째 물건 ([1, 2])A가 훔침 → A +1 =..

[프로그래머스 JAVA] 이상한 문자 만들기

문제 링크 👉 프로그래머스 - 이상한 문자 만들기📝 1. 문제의 핵심 요약주어진 문자열 s에서 각 단어의 짝수 번째 알파벳은 대문자, 홀수 번째 알파벳은 소문자로 변환해야 합니다. 여기서 짝/홀수는 문자열 전체 기준이 아니라, 단어별 기준입니다. 공백은 그대로 유지해야 합니다.예시:입력 → "try hello world"출력 → "TrY HeLlO WoRlD"⚠️ 2. 주의 사항단어는 공백(' ')으로 구분되며, 공백의 개수는 한 개 이상일 수 있습니다.각 단어에서 인덱스 0부터 짝/홀을 판단합니다.공백은 그대로 두고 처리합니다.🛠️ 3. 슈도코드1. 문자열을 문자 배열로 변환한다.2. 문자 배열을 순회하며: a. 공백이면, 짝/홀수 인덱스 카운터를 0으로 초기화하고 공백을 결과에 추가한다. ..

[프로그래머스 JAVA] 시저 암호

문제 링크 👉 https://school.programmers.co.kr/learn/courses/30/lessons/12926🔑 1. 문제 핵심 요약주어진 문자열 s의 각 알파벳 문자를 n만큼 밀어 암호화하는 문제입니다.대소문자는 따로 순환 처리해야 하고, 공백은 그대로 둬야 합니다.⚠️ 2. 주의사항공백 ' '은 변하지 않습니다.대문자 ↔ 대문자, 소문자 ↔ 소문자 → 따로 처리.밀었을 때 'z'를 넘으면 'a', 'Z'를 넘으면 'A'로 돌아가야 함.Character 클래스 사용 → isUpperCase, isLowerCase로 깔끔한 분기 가능.🛠️ 3. 슈도코드for 각 문자 c in 문자열: if c == ' ': 그대로 추가 else if c는 대문자: ..

[프로그래머스 JAVA] 자연수 뒤집어 배열로 만들기

📌 문제 링크👉 프로그래머스 문제 바로가기✨ 1. 문제의 핵심 요약주어진 자연수 n을 뒤집어서 각 자리 숫자를 배열로 반환하는 문제입니다.예: 12345 → [5,4,3,2,1]⚠️ 2. 주의 사항n은 최대 10,000,000,000까지 주어지므로 long 타입으로 처리해야 합니다.문자열로 변환 후 역순 처리를 하면 구현이 간단해집니다.숫자를 문자로 바꾸면 '0' 문자를 빼주기 위해 - '0' 연산이 필요합니다.🛠️ 3. 슈도코드 (의사코드)1. n을 문자열로 변환2. 문자열을 뒤집기3. 각 문자를 하나씩 꺼내 정수로 변환해 배열에 담기4. 배열 리턴💡 4. 코드 + 주석class Solution { public int[] solution(long n) { // 1. long →..

[프로그래머스 JAVA] 안전지대

문제 링크 → 프로그래머스 문제 보러 가기✅ 문제 설명다음 그림처럼, 지뢰(1)가 매설된 칸과 그 인접한 8방향(위, 아래, 좌, 우, 대각선) 칸을 모두 위험 지역으로 간주합니다.n x n 크기의 2차원 배열 board가 주어질 때, 안전한 칸의 개수를 구하는 프로그램을 작성하세요.🔑 제한사항board는 n x n 배열 (1 ≤ n ≤ 100)1 → 지뢰, 0 → 안전지역리턴 값 → 안전지역의 개수📋 입출력 예boardresult[[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,1,0,0],[0,0,0,0,0]]16[[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,1,1,0],[0,0,0,0,0]]13[[1,1,1,1,1,1],[1,1,1,1,1,1..

[프로그래머스 JAVA] 삼각 달팽이

문제 링크 바로가기1. 문제 핵심 요약주어진 정수 n에 대해, 밑변과 높이가 n인 삼각형을 생각하고, 맨 위 꼭짓점부터 반시계 방향으로 달팽이처럼 숫자를 채워나가야 합니다. 채운 결과를 첫 번째 행부터 순서대로 한 줄 배열로 합친 결과를 구하는 문제입니다.예시n 값결과 배열4[1,2,9,3,10,8,4,5,6,7]5[1,2,12,3,13,11,4,14,15,10,5,6,7,8,9]2. 주의사항n은 최대 1000까지 주어질 수 있습니다. (n=1000이면 최대 1,000,000개의 숫자)삼각형 형태로 채워야 하므로 (i, j)에서 j 인 영역만 사용해야 합니다.방향 전환은 3단계(아래→오른쪽→대각선 위 왼쪽)를 순서대로 반복합니다.초기 위치 설정을 조심해야 합니다: (0,0)부터가 아니라 (y=-1,..

[프로그래머스 JAVA] 교점에 별 만들기

문제 링크 바로가기 🔗1. 문제 핵심 요약이 문제는 다음과 같습니다:여러 직선이 주어질 때, 직선끼리의 교점을 찾습니다.교점 중에서 x와 y 모두 정수인 교점만 골라야 합니다.골라낸 교점을 좌표 평면에 별(*)로 표시합니다.단, 별이 모두 포함되는 최소한의 사각형만 그려야 합니다.결국, 핵심은 두 가지입니다:정수 좌표인 교점만 정확히 찾아야 한다.작은 크기의 2차원 배열 안에 별을 배치해야 한다.2. 주의 사항 정리이 문제는 단순히 교점만 찾는 게 아니라, 꼭 주의해야 할 사항이 있습니다.항목설명오버플로우직선 계수(A, B, C) 값이 최대 100,000이라 곱셈하면 100억이 나옴. int의 최대 범위는 약 21억이므로 int로 계산하면 오버플로우 발생 가능. long 사용 필수정수 좌표 체크교점 x..

[PCCP] JAVA Char 를 int 로 변환

Java에서 char를 int로 변환하는 방법 정리Java에서 프로그래밍하다 보면 char 타입을 int로 변환해야 할 때가 많습니다.특히 코딩테스트(PCCP 등)에서는 숫자 문자('0'~'9')를 정수로 변환하는 일이 자주 나오죠.오늘은 char를 int로 변환하는 다양한 방법과 상황에 맞는 사용법을 정리해보겠습니다.1. 명시적 형변환 (Casting)가장 기본적인 방법은 char를 (int)로 캐스팅(casting)하는 것입니다.char c = 'A';int num = (int) c;System.out.println(num); // 출력: 65'A'의 유니코드(아스키코드) 값인 65가 출력됩니다.문자 자체의 유니코드 값을 얻고 싶을 때 사용하는 방법입니다.2. Character.getNumericVa..

PCCP 2025.04.19
728x90
반응형