BOJ 32

백준(BOJ) 11399 : ATM (실버4) / 자바(Java) 풀이

문제https://www.acmicpc.net/problem/113993줄 요약입력받은 N개의 정수를 오름차순으로 정렬하여 배열 P에 저장합니다.배열 P를 이용하여 누적 합 배열 prefixSum을 계산합니다.누적 합 배열 prefixSum의 모든 원소를 더하여 총 대기 시간을 계산하고 출력합니다.코드// package boj11339;import java.io.*;import java.util.Arrays;import java.util.stream.Stream;public class Main { public static void main(String[] args) throws Exception { // 입력 파일로부터 데이터를 읽어오기 위해 파일 입력 스트림 설정 // S..

Problem_Solving 2024.04.30

백준(BOJ) 1018 : 체스판 다시 칠하기 (실버4) / 자바(Java) 풀이

문제https://www.acmicpc.net/submit/1018/776624653줄 요약체스판을 만들기 위해 주어진 보드에서 8x8 크기로 잘라내는 모든 경우를 탐색합니다.각 경우에 대해 첫 번째 칸이 흰색인 경우와 검은색인 경우 두 가지를 고려하여 수정 횟수를 계산합니다.모든 경우 중 최소 수정 횟수를 출력합니다.코드package boj1018;import java.io.*;public class Main { public static void main(String[] args) throws Exception { // 입력 파일로부터 입력을 받기 위해 FileInputStream 사용 System.setIn(new FileInputStream("src/input.txt"..

Problem_Solving 2024.04.30

백준(BOJ) 1436 : 영화감독 숌 (실버5) / 자바(Java) 풀이

문제https://www.acmicpc.net/problem/14363줄 요약입력값 N을 받아와서 N번째 종말의 숫자를 찾는 문제를 해결합니다.666부터 시작하여 1씩 증가시키면서, 숫자에 "666"이 포함되어 있는지 확인합니다.N번째로 "666"이 포함된 숫자를 찾으면 해당 숫자를 출력하고 프로그램을 종료합니다.코드// package boj1436;import java.io.*;public class Main { public static void main(String[] args) throws Exception { // 입력 // 로컬에서 테스트할 때 사용하는 입력 파일 설정 // System.setIn(new FileInputStream("src/input...

Problem_Solving 2024.04.30

Shell로 BOJ VSCode Java 설정 자동화하기 (Mac 기준)

요새 특강 때문에 PS를 반복으로 하고 있다. PS용으로는 Eclipse와 IntelliJ는 좀 무거운 느낌이라서 VScode로 진행 중이다. 근데 이게 계속 하다보니 번거롭고 귀찮다. 그런데 또 나는 개발자다. 그러하니 자동화하자. VScode는 .vscode/launch.json 에서 실행/디버깅 설정을 관리한다. 문제를 풀기 위한 기본 폴더 + input.txt를 만들어주면서 동시에 해당 경로로 실행 설정을 가장 top으로 잡아주는 걸로 구현 Repository (폴더 구조) GitHub - TomAlgorismus/snippet: 코드 조각 코드 조각. Contribute to TomAlgorismus/snippet development by creating an account on GitHub...

Today_I_Learned 2024.01.17

백준(BOJ) 13251 : 조약돌 꺼내기 (자바, 파이썬)

13251번: 조약돌 꺼내기 첫째 줄에 뽑은 조약돌이 모두 같은 색일 확률을 출력한다. 정답과의 절대/상대 오차는 10-9까지 허용한다. www.acmicpc.net 설계 전체 경우의 수 계산: 상자에 있는 모든 돌들 중에서 K개를 뽑는 경우의 수(total)를 계산. 같은 색상의 돌을 뽑을 확률 계산: 각 색상별로 K개를 뽑을 경우의 확률을 계산하고, 이를 모두 더하여 총합(same)을 구함. 최종 확률 계산 및 출력: 같은 색상의 돌을 뽑을 총 확률(same)을 전체 경우의 수(total)로 나누어 최종 확률을 계산하고 출력. 조합 계산 함수 (getCombination): 조합(nCr)을 계산하기 위한 함수로, 더 큰 숫자에 대한 팩토리얼 계산을 피하기 위해 단순화된 조합 계산 방식을 사용. 구현 ..

Problem_Solving 2024.01.12

백준(BOJ) 15661 : 링크와 스타트 (자바, 파이썬)

15661번: 링크와 스타트 첫째 줄에 N(4 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에 S가 주어진다. 각 줄은 N개의 수로 이루어져 있고, i번 줄의 j번째 수는 Sij 이다. Sii는 항상 0이고, 나머지 Sij는 1보다 크거나 같고, 100 www.acmicpc.net 설계 N명의 팀원들 사이의 능력치 차이를 최소화하는 문제 문제 해결을 위해 백트래킹 알고리즘을 사용 각 팀원들의 능력치는 2차원 배열 S에 저장되며, 두 팀 간의 능력치 차이는 재귀적으로 계산 재귀 메서드 사용 start와 depth를 매개변수로 하여 현재 팀 구성과 깊이를 추적 현재 구성의 능력치 차이(currentScore)를 계산하고, 이를 minDiff와 비교하여 최소값을 갱신 depth가 N / 2에 도달하면 ..

Problem_Solving 2024.01.12

백준(BOJ) 1527 : 금민수의 개수 (자바, 파이썬)

1527번: 금민수의 개수 첫째 줄에 A와 B가 주어진다. A는 1보다 크거나 같고, 1,000,000,000보다 작거나 같은 자연수이다. B는 A보다 크거나 같고, 1,000,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 설계 주어진 범위 내에서 "금민수"를 찾는 문제를 해결 금민수란 숫자 4와 7로만 이루어진 숫자를 의미. 예를 들어, 4, 7, 47 등은 금민수. 모든 수를 검사 : 순회하며 주어진 숫자가 금민수인지 판별. 숫자를 10으로 나눈 나머지가 4 또는 7이 아닐 경우, 금민수가 아님. 백트래킹을 통한 금민수 생성 : 재귀적으로 금민수를 생성. 시작 숫자로 4와 7을 사용하고, 각 단계에서 숫자의 끝에 4 또는 7을 추가하여 새로운 금민수를 생성 첫 번째 방법 (모..

Problem_Solving 2024.01.11

백준(BOJ) 2942 : 퍼거슨과 사과 (자바, 파이썬)

2942번: 퍼거슨과 사과 맨체스터 유나이티드의 감독 퍼거슨은 빨간 사과를 R개, 초록 사과를 G개 가지고 있다. 훈련장에 있는 선수들 중 몇 명에게 나누어 주려고 한다. 단, 선수들이 서로 같은 개수의 사과를 받지 못하 www.acmicpc.net 설계 빨간 사과(R)와 초록 사과(G)를 일정한 수의 선수들에게 똑같이 나눠주되, 남는 사과가 없도록 하는 경우의 수를 구하는 문제를 해결 문제의 핵심은 “모든 선수에게 같은 수의 사과를 나눠주면서 남는 사과가 없어야 한다”는 조건 → 이 조건을 만족시키기 위해 빨간 사과와 초록 사과의 수에 대한 최대공약수(Greatest Common Divisor, GCD)를 구하는 것이 중요 최대공약수(GCD)의 중요성 같은 수의 사과 배분: 빨간 사과와 초록 사과를 모..

Problem_Solving 2024.01.10

백준(BOJ) 10972 : 다음 순열 (자바, JAVA)

10972번: 다음 순열 첫째 줄에 입력으로 주어진 순열의 다음에 오는 순열을 출력한다. 만약, 사전순으로 마지막에 오는 순열인 경우에는 -1을 출력한다. www.acmicpc.net 설계 주어진 순열에 대해 사전순으로 바로 다음에 오는 순열을 찾아 출 순열의 "다음"이라는 것은 사전순으로 바로 다음에 오는 순서를 의미. 먼저 순열에서 뒤쪽부터 탐색하여 이전 숫자보다 현재 숫자가 처음으로 커지는 지점을 찾음. 이 지점을 변경점(cp)으로 하여, 변경점의 숫자보다 큰 숫자 중 가장 뒤에 있는 숫자와 변경점의 숫자를 교환 이후 변경점 이후의 숫자들을 오름차순으로 정렬. 이렇게 하여 얻어진 순열이 입력된 순열의 다음 순열이 됨. 만약 다음 순열이 존재하지 않으면, 즉 주어진 순열이 사전순으로 마지막 순열이면 ..

Problem_Solving 2024.01.05

백준(BOJ) 10974 : 모든 순열 (자바, JAVA)

10974번: 모든 순열 N이 주어졌을 때, 1부터 N까지의 수로 이루어진 순열을 사전순으로 출력하는 프로그램을 작성하시오. www.acmicpc.net 설계 주어진 정수 N에 대해 1부터 N까지의 모든 숫자를 사용하여 만들 수 있는 모든 순열을 생성하고 출력 순열 : N개의 숫자를 일렬로 나열하는 것 모든 숫자는 한 번씩만 나타나야 하며, 순서에 따라 다른 순열이 됨 permutate라는 재귀 메소드를 사용하여 가능한 모든 조합을 시도하고, 이미 사용한 숫자는 visited 배열을 통해 체크 각 순열이 완성될 때마다 이를 출력하며, 모든 순열을 찾을 때까지 이 과정을 반복 구현 코드 // package boj10974; // 패키지 선언 // import java.util.Arrays; // 자바 유틸..

Problem_Solving 2024.01.04