[백준] 9655번 : 돌 게임 (JAVA)
·
코테(Solved.ac + Programmers)
🔗 문제 링크https://www.acmicpc.net/problem/9655📌 문제 개요돌 N개가 있다.상근(SK)과 창영(CY)이 번갈아가며 1개 또는 3개의 돌을 가져간다.마지막 돌을 가져가는 사람이 승리📌 접근 방법이 문제는 단순 구현처럼 보이지만, 직접 작은 수부터 승패를 나열해 보면 규칙이 보인다.N을 1부터 차례대로 확인 → 홀수는 SK, 짝수는 CY가 이긴다.N승자1SK2CY3SK4CY5SK6CY📌 핵심 아이디어1개 또는 3개를 가져가면 항상 돌 개수의 홀짝이 바뀐다.시작이 홀수 → 마지막 돌은 SK가 가져감시작이 짝수 → 마지막 돌은 CY가 가져감따라서 N % 2 로 승자가 결정📌 전체 코드package no_9655;import java.io.BufferedReader;impo..
[백준] 25206번 : 너의 평점은 (JAVA)
·
코테(Solved.ac + Programmers)
📌 문제 링크https://www.acmicpc.net/problem/25206📌 문제 개요- 20개의 과목 정보가 주어진다.- 각 과목은 과목명, 학점, 성적으로 구성- 전공평점은 다음 공식으로 계산(학점 × 과목평점의 합) / (학점의 합) * 단, 성적이 P인 과목은 계산에서 제외한다.📌 접근 방법성적을 점수로 변환하기 위해 Map을 사용20줄 입력을 반복문으로 처리한다.성적이 "P"인 경우 continue로 건너뛴다.가중 평균을 계산소수점 6자리까지 출력📌 핵심 아이디어이 문제의 핵심은 가중 평균 계산P는 학점 합에도 포함되지 않음Map을 사용하면 조건문 없이 점수 조회 가능📌 전체 코드package no_25206;import java.io.BufferedReader;import jav..
[백준] 1789번 : 수들의 합 (JAVA)
·
코테(Solved.ac + Programmers)
🔗 문제 링크https://www.acmicpc.net/problem/1789📌 문제 개요자연수 S가 주어질 때, 서로 다른 자연수들의 합으로 S를 만들 수 있는 최대 개수를 구하는 문제.S = 201 + 2 + 3 + 4 + 5 = 156을 더하면 21 (초과)→ 정답은 5📌 접근 방법- 가장 작은 수부터 차례대로 더하는 것이 개수를 최대화하는 최적 전략- 순서대로 더하다가 S를 초과하기 직전의 개수를 구하면 된다.1 → 2 → 3 → 4 → … 📌 핵심 아이디어1부터 k까지의 합 공식- 이 조건을 만족하는 최대 k를 찾는 문제이며, 직접 누적합으로 구현해도 충분히 빠르다.k(k+1)/2 ≤ S 📌 전체 코드package no_1789;import java.io.BufferedReader;im..
[백준] 1085번 : 직사각형에서 탈출 (JAVA)
·
코테(Solved.ac + Programmers)
📌 문제 링크https://www.acmicpc.net/problem/1085📌 문제 개요점 (x, y)가 직사각형 내부에 존재할 때,직사각형의 네 변 중 가장 가까운 변까지의 거리를 구하는 문제직사각형의 왼쪽 아래 꼭짓점은 (0, 0)이고,오른쪽 위 꼭짓점은 (w, h)이다.📌 접근 방법현재 위치 (x, y)에서 각 변까지의 거리를 계산한다.왼쪽 변 → x오른쪽 변 → w - x아래쪽 변 → y위쪽 변 → h - y이 네 값 중 최소값을 구하면 된다.Math.min()을 중첩 사용하여 최소값을 계산📌 핵심 아이디어꼭짓점까지 거리를 구하는 것이 아니라 변까지의 수직 거리를 구한다.문제는 단순 구현이며 사칙연산과 최소값 비교만 필요하다.시간 복잡도는 O(1)이다.📌 전체 코드package no_1..
[백준] 11659번 : 구간 합 구하기 4 (JAVA)
·
코테(Solved.ac + Programmers)
🔗 문제 링크https://www.acmicpc.net/problem/11659📌 문제 개요길이 N의 정수 수열이 주어진다.M개의 구간 (i, j)가 주어질 때,각 구간에 대해 i번째 수부터 j번째 수까지의 합을 출력하는 문제이 문제의 핵심은 빠르게 구간 합을 계산하는 것이다.📌 접근 방법매 구간마다 반복문을 돌며 합을 계산하면 시간 복잡도가 커진다.따라서 누적합(Prefix Sum) 배열을 먼저 생성누적합 배열을 이용하면 각 구간 합을 O(1)에 계산📌 핵심 아이디어1. 누적합 배열 정의prefix[i] = 1번부터 i번까지의 합2. 누적합 생성 공식prefix[i] = prefix[i - 1] + arr[i - 1]3. 구간 합 공식- 이 공식을 사용하면 반복문 없이 바로 계산 가능하다.i ~..
[백준] 2083번 : 럭비 클럽 (JAVA)
·
코테(Solved.ac + Programmers)
🔗 문제 링크https://www.acmicpc.net/problem/2083📌 문제 개요이름, 나이, 몸무게가 한 줄씩 주어진다.조건에 따라 Senior 또는 Junior를 출력한다.이름이 # 인 입력이 들어오면 종료한다.📌 접근 방법한 줄씩 입력을 받아 처리이름이 # 인지 먼저 확인해 반복을 종료나이와 몸무게를 기준으로 조건 분기📌 핵심 아이디어종료 조건이 있는 입력은 while(true) + break 구조가 깔끔조건식나이 > 17 또는 몸무게 ≥ 80 → Senior그 외 → Junior📌 전체 코드package no_2083;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;i..
[BCGD] 비전공자 백엔드 개발 도전기 (팀프로젝트)
·
BootCamp(JAVA)
☑️ 팀 프로젝트_최종완료- 이벤트 캘린더 프로젝트☑️ 작업기간- 2025/02/25 ~ 2025/02/28☑️ 주요기능 - 파일생성/저장/불러오기 : event.ser 파일생성 + 사용자 별 id에 맞는 이벤트 일정 제목, 기간, 내용 저장/불러오기- 달력표시 : 년도, 월 입력받아 해당 년도의 월 달력 표시, 일정있는 일자 카운트기능- 일정조회 : 일자 입력시(2025/02/26) 해당 일자에 등록된 이벤트 리스트 출력- 일정수정 : 일자 입력시(2025/02/26) 해당 일자에 등록된 이벤트 리스트 중 원하는 일정내용 수정- 일정삭제 : 일자 입력시(2025/02/26) 해당 일자에 등록된 이벤트 리스트 중 원하는 일정내용 삭제- 일정추가 : 일자 입력시(2025/02/26) 해당 일자에 이벤트..
[BCGD] 비전공자 백엔드 개발 도전기 (09)
·
BootCamp(JAVA)
9장. 접근제어자, 인터페이스, 람다식package test;/* * 1. Animal 클래스 => 추상클래스 * 멤버변수 : 동물의 종류, 다리수 * 생성자 : 동물의 종류랑 다리수 입력받기. * 멤버메서드 : * void eat(); => 추상메서드 * void sound(); => 추상메서드 * 2. Dog클래스 : Animal 클래스의 자손클래스 * 생성자의 매개변수 없음. * 멤버메서드 : * void eat() : "주인이 주는대로 먹는다" 출력 * void sound(); "멍멍짖는다"; * 3. Lion클래스 : Animal 클래스의 자손클래스 * 생성자의 매개변수 없음. * 멤버메서드 : * ..
[JAVA] 8. 배열
·
JAVA
변수를 반복해서 선언하고 반복해서 사용하는 문제를 해결하는 것이 바로 배열이다.같은 타입의 변수를 사용하기 편하게 하나로 묶어둔 것이다.public static void main(String[] args) { int[] students; //배열 변수 선언 students = new int[5]; //배열 생성 //변수 값 대입 students[0] = 90; students[1] = 80; students[2] = 70; students[3] = 60; students[4] = 50; //변수 값 사용 System.out.println("학생1 점수: " + students[0]); System.out.println("학생2 점수: " + students[1]); S..
[JAVA] 7. Scanner
·
JAVA
Scanner System.out 을 통해서 출력을 했듯이, System.in 을 통해서 사용자의 입력을 받을 수 있다.그런데 자바가 제공하는 System.in 을 통해서 사용자 입력을 받으려면 여러 과정을 거쳐야해서 복잡하고 어렵다. 자바는 이런 문제를 해결하기 위해 Scanner 라는 클래스를 제공한다. 이 클래스를 사용하면 사용자 입력을 매우 편리 하게 받을 수 있다.public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("문자열을 입력하세요:"); String str = scanner.nextLine(); // 입력을 String으로 가져옵니다. System.out.p..