본문 바로가기

Baekjoon100

[백준] 1057번 토너먼트 JAVA (자바) 풀이 문제 1057 (수학, 브루트포스) 토너먼트 과정 1번부터 N번의 선수 중 서로 인접한 번호끼리 스타를 한다 이긴 사람은 다음 라운드에 진출하고 최후의 한 명이 남을 때까지 진행 라운드의 참가자가 홀수명일 경우, 마지막 번호는 다음 라운드로 자동 진출 다음 라운드에선 다시 참가자의 번호를 1번부터 매긴다 (처음 정해진 순서 유지하면서) 김지민과 임한수는 서로 대결하기 전까지 항상 이긴다고 가정 김지민과 임한수가 몇 라운드에서 대결하는지 출력해라 [입력] : 첫째 줄에 참가자 수 N, 김지민과 임한수의 번호 입력 ( 2 ≤ N ≤ 100,000 자연수 ) [출력] : 김지민과 임한수가 대결하는 라운드 번호 출력 (서로 대결하지 않을 때, -1을 출력) [참고] 규칙찾기 홀수일 경우 다음 라운드 순번 N/2.. 2024. 4. 16.
[백준] 2003번 수들의 합2 JAVA (자바) 풀이 문제 2003 N개의 수로 된 수열 = A[1], A[2], …, A[N] 수열의 i ~ j번째 수까지의 합 = A[i]+ … + A[j] = M이 되는 경우의 수 [입력] : 첫째 줄에 N(1 ≤ N ≤ 10,000), M(1 ≤ M ≤ 300,000,000) : 다음 줄에는 A[1], A[2], …, A[N] (공백으로 분리 & 각각의 A[x]는 30,000을 넘지 않는 자연수) [출력] : 경우의 수 출력 [참고] 기준숫자를 하나 잡고 합이 M될 때까지 for문 돌리기 check(j) = 시작 숫자 일단 j를 입력받으면 바로 이전 숫자들과 합부터 계산 수열 합이 M이 되면 count하고 for문 break 수열 합이 M을 넘어서면 바로 for문 break [코드] import java.io.*; i.. 2024. 4. 11.
[백준] 1018번 체스판 다시 칠하기 JAVA (자바) 풀이 문제 1018 M x N 크기 보드 (검정색 & 흰색) 보드를 잘라서 8 x 8 크기의 체스판으로 만들기 체스판 규칙 : 검적생 흰색 번갈아서 칠할 것 잘라낸 보드 판을 체스판 규칙에 맞게 다시 칠해야 하는 최소 횟수를 구하시오 [입력] : 첫째 줄에 N과 M ( 8보다 크거나 같고 50보다 작거나 같은 자연수) : 둘째 줄부터 N개의 줄 보드 각 행의 색이 주어진다 ( B = 검은색, W = 흰색 ) [출력] : 다시 칠해야 하는정사각형 개수 [참고] 1. 맨 처음 시작 판을 기준으로 번갈아 색을 칠할 것! 첫 시작판을 한가지 색으로 고정하자! 흰색판일 경우로만 진행하는 것 흑과 백 경우의 수가 2개 이므로 boolean을 사용! (0과 1로 사용해도 괜찮다) 반대색은 무조건 64 - (count) 위.. 2024. 4. 11.
[백준] 1065번 한수 JAVA (자바) 풀이 문제 1065 한수 = 어떤 양의 정수 X의 각 자리가 등차수열을 이룬다 등차수열 = 연속된 두 개의 수의 차이가 일정한 수열 예) [ 1, 1, 1 ] , [ 1, 2, 3 ] , [ 1, 3, 5 ], 등 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력 [입력] : 첫 번째 줄 1,000보다 작거나 같은 자연수 N [출력] : 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력 [참고] 1. 일의 자리 숫자 / 십의 자리 숫자는 무조건 한수이다 (1~99까지는 한수 99개) 1의 자리 숫자 자릿수가 1개 뿐이라 비교될 숫자가 없어서 그 자체로 수열 ex) 1 ▶ 즉 한수이다 ( 공차 없음 ) 10의 자리 숫자 자릿수가 2개 뿐이라 어차피 비교 대상은 하나이기 때문에 일정한 공차를.. 2024. 4. 10.
[백준] 15661번 링크와 스타트 JAVA (자바) 풀이 문제 15661 (비트마스킹) : 축구는 평일 오후에 하고 의무 참석도 아니다. : 축구를 하기 위해 모인 사람은 총 N명, 이제 스타트 팀과 링크 팀으로 사람들을 나눈다. (한 명 이상) : 번호를 1부터 N까지로 배정했고 능력치 Sij는 i번 사람과 j번 사람이 같은 팀에 속했을 때, 팀에 더해지는 능력치이다. 팀의 능력치는 팀에 속한 모든 쌍의 능력치 Sij의 합이다. (예시) N=4이고, S가 아래와 같은 경우를 살펴보자. 예를 들어, 1, 2번이 스타트 팀, 3, 4번이 링크 팀에 속한 경우에 두 팀의 능력치는 아래와 같다. 스타트 팀: S12 + S21 = 1 + 4 = 5 링크 팀: S34 + S43 = 2 + 5 = 7 1, 3번이 스타트 팀, 2, 4번이 링크 팀에 속하면, 두 팀의 능력.. 2024. 2. 26.
[백준] 3758번 KCPC JAVA (자바) 풀이 문제 3758 총 k개의 문제 문제에 대한 점수 = 0점 ~ 100점 풀이를 제출한 팀의 ID, 문제 번호, 점수 시간 순서대로 저장 한 문제에 대한 풀이를 여러 번 제출할 수 있고 그 중 최고 점수 풀이를 한번도 제출하지 않았으면 0점 팀 최종 점수 = 각 문제의 최고 점수의 총합 팀 순위 = 현재 팀보다 높은 점수를 받은 팀의 수 + 1 최종 점수가 같은 경우, 풀이를 제출한 횟수가 적은 팀의 순위가 높다. 최종 점수도 같고 제출 횟수도 같은 경우, 마지막 제출 시간이 더 빠른 팀의 순위가 높다. [입력] : 첫 번째 줄 테스트 데이터의 수 T : 각 테스트 데이터의 첫 번째 줄 팀의 개수 n, 문제의 개수 k, 당신 팀의 ID t, 로그 엔트리의 개수 m : 다음 m개의 줄에 각 풀이에 대한 정보가.. 2024. 2. 13.
[백준] 12865번 평범한 배낭 JAVA (자바) 풀이 문제 12865 준서가 여행에 필요하다고 생각하는 N개의 물건이 있다 각 물건은 무게 W와 가치 V를 가지는데 해당 물건을 배낭에 넣어서 가면 준서가 V만큼 즐길 수 있다 최대 K만큼의 무게만을 넣을 수 있는 배낭만 들고 다닐 수 있다 물건들의 가치의 최댓값 구하기 [입력] : 첫 줄에 물품의 수 N(1 ≤ N ≤ 100), 버틸 수 있는 무게 K(1 ≤ K ≤ 100,000) : 두 번째 줄부터 N개의 줄까지 물건 무게 W(1 ≤ W ≤ 100,000), 해당 물건의 가치 V(0 ≤ V ≤ 1,000) ( 모든 수는 정수 ) 4 7 6 13 4 8 3 6 5 12 [출력] : 한 줄에 배낭에 넣을 수 있는 물건들의 가치합의 최댓값을 출력 14 [코드] import java.io.*; public cla.. 2024. 2. 5.
[백준] 20310번 타노스 JAVA (자바) 풀이 문제 20310 0과 1로 이루어진 문자열 S S가 포함하는 0의 개수와 1의 개수는 모두 짝수 갑자기 타노스는 구성하는 문자 중 절반의 0과 절반의 1을 제거하여 새로운 문자열 S'를 만들고자 한다 S'로 가능한 문자열 중 사전순으로 가장 빠른 것을 구해라 [입력] : 문자열 S [출력] : 문자열 중 사전순으로 가장 빠른 것을 출력 [코드] import java.io.BufferedReader; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws Exception { BufferedReader in = new BufferedReader(new InputStreamReader(.. 2024. 1. 30.
[백준] 17484번 진우의 달 여행 JAVA (자바) 풀이 문제 17484 지구와 우주사이는 N X M 행렬 각 원소의 값 = 지날 때 소모되는 연료 양 연지구의 어느위치에서든 출발하여 달의 어느위치든 착륙하는 연료의 최소값을 구해라 지구 → 달 경우 우주선 이동 가능 방향 우주선 이전에 움직인 방향으로 움직일 수 없다 (같은 방향으로 두번 연속 이동 불가) [입력] : 첫 번째 줄 지구와 달 사이 공간을 나타내는 행렬 크기 N, M ( 2≤ N, M ≤ 6 ) : N줄 동안 각 행렬의 원소 값 ( 행렬의 원소값은 100 이하의 자연수 ) 6 4 5 8 5 1 3 5 8 4 9 77 65 5 2 1 5 2 5 98 1 5 4 95 67 58 [출력] : 최소 연료의 값 29 [코드] import java.io.*; import java.util.*; class .. 2024. 1. 30.
[백준] 9017번 크로스 컨트리 JAVA (자바) 풀이 문제 9017 (구현) 팀 = 6명이어야 점수 계산 가능 (6명 아래는 점수 없음) 결승점을 통과한 순서대로 점수 부여 (점수는 등수와 같다) 선수들의 소속 팀 번호 부여 팀 점수 = 상위 4명의 주자의 점수를 합하여 계산 (결승점을 통과한 순서대로 점수를 받기) 가장 낮은 점수를 얻는 팀이 우승 (동점의 경우, 다섯 번째 주자가 가장 빨리 들어온 팀이 우승) (예시) → 팀 B, D = 선수미달 = 점수 없음 → 팀 A 점수 = 18 (1+4+6+7) ▶ 두 팀의 점수가 같으므로 5번째 선수 점수를 통해 A 팀 우승!! → 팀 C 점수 = 18 (2+3+5+8) [입력] : 첫 번째 줄 테스트 케이스 수 T (입력 데이터는 표준입력 사용) : 각 테스트 케이스의 첫 번째 줄에 결승점 통과한 인원수 N .. 2024. 1. 29.