본문 바로가기

Baekjoon/[7] 기타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.
[백준] 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.
[백준] 16926번 배열 돌리기 1 JAVA (자바) 풀이 문제 1707 크기가 N×M인 배열이 있을 때, 배열을 다음과 같이 반시계 방향으로 돌려야 한다 A[1][1] ← A[1][2] ← A[1][3] ← A[1][4] ← A[1][5] ↓ ↑ A[2][1] A[2][2] ← A[2][3] ← A[2][4] A[2][5] ↓ ↓ ↑ ↑ A[3][1] A[3][2] → A[3][3] → A[3][4] A[3][5] ↓ ↑ A[4][1] → A[4][2] → A[4][3] → A[4][4] → A[4][5] 예) 아래와 같은 배열을 2번 회전시키면 다음과 같다 1 2 3 4 2 3 4 8 3 4 8 6 5 6 7 8 1 7 7 6 2 7 8 2 9 8 7 6 → 5 6 8 2 → 1 7 6 3 5 4 3 2 9 5 4 3 5 9 5 4 [입력] : 첫째 줄에 배.. 2024. 1. 23.
[백준] 18111번 마인크래프트 JAVA (자바) 풀이 문제 18111 마인크래프트는 1 × 1 × 1 크기의 블록들로 건축 가능 땅의 높이를 모두 동일하게 만드는 ‘땅 고르기’ 작업 필수 세로 N, 가로 M 크기의 집터 내가 가진 블럭 B 집터 맨 왼쪽 위의 좌표는 (0, 0) 블록을 제거해 인벤토리에 넣기 = 2초 소요 인벤토리에서 블록 하나를 꺼내어 놓기 = 1초 소요 땅 고르기’ 작업에 걸리는 최소 시간과 그 경우 땅의 높이를 출력해라 (집터 아래에 빈 공간은 존재 X, 집터 바깥에서 블록 수집 X, 땅의 높이는 256블록을 초과 X, 음수 X) [입력] : 첫째 줄에 N, M, B (1 ≤ M, N ≤ 500, 0 ≤ B ≤ 6.4 × 107) : 둘째 줄부터 N개의 줄에 각각 M개의 정수로 땅의 높이 : (i + 2)번째 줄의 (j + 1)번째 수.. 2024. 1. 23.
[백준] 1914번 하노이 탑 JAVA (자바) 풀이 문제 1914번 : 3개의 장대 중 첫번째 장대에 반경이 서로 다른 n개의 원판이 크기 순서대로 쌓여있다 : 첫번째 장대를 세번째 장대로 옮긴다 한 번에 한 개의 원판씩 옮기기 가능 쌓아놓은 원판은 항상 크기별로 (아래로 갈수록 더 크다) : 이동횟수는 최소 [입력] : 첫 줄에 첫번째 장대에 쌓인 원판 개수 N (1 ≤ N ≤ 100) [출력] : 첫째줄에 옮긴 횟수 출력 : 두번째 줄부터 K개의 줄까지 수행과정 출력 (N ≤ 20) 예) 두 정수 A B 출력 = A번째 탑의 가장 위 원탑을 B번째 탑의 가장 위로 옮긴다 : N > 20 경우 과정 출력 X [설명 예시] 원반개수 [n = 1] A → C 1회 총 1회 원반개수 [n = 2] A → B 1회 A → C 1회 B → C 1회 총 3회 원반.. 2023. 10. 30.
[백준] 17609번 회문 JAVA (자바) 풀이 문제 17609번 (투포인터) : 회문이란? 앞뒤로 같은 순서의 문자로 구성된 문자열 (예) 'abba’, ‘kayak’, ‘reviver’, ‘madam’ : 유사회문이란? 한 문자를 삭제해서 회문으로 만들 수 있는 문자열 (예) 'summuus’ 에서 5 or 6 번째 문자 제거하면 회문이 된다 : 회문이면 0, 유사회문이면 1, 그 외는 2를 출력한다 [입력] : 첫 줄에 문자열 개수 T 둘째 줄부터 T개의 줄에 문자열 하나씩 입력 ( 3 ≤ 문자열 길이 ≤100,000 ) (문자열 길이는 3영문 알파벳 소문자로 이루어져있다) [출력] : 회문이면 0, 유사회문이면 1, 그 외는 2를 출력 [설명] 양 끝에서부터 검사하기 시작한다 → 이때 시작지점, 끝지점 두 개의 포인터 필요 시작 = 끝 이라면 .. 2023. 10. 23.
[백준] 2531번 회전 초밥 JAVA (자바) 풀이 문제 2531번 (투포인터, 슬라이딩 윈도우) : 초밥 벨트 임의의 위치부터 k개의 접시를 연속해서 식사 : 쿠폰에 쓰여진 초밥은 무료 시식 가능 : 손님이 먹을 수 있는 최대 초밥 가짓수를 구해라 [입력] : 첫 줄에 접시 수 N / 초밥 가짓 수 d / 연속해서 먹는 접시의 수 k / 쿠폰 번호 c 둘째 줄에는 수열 N개의 줄에는 각 줄 마다 초밥 종류가 하나씩 주어진다 [출력] : 먹을 수 있는 초밥의 최대 가짓 수 출력 [설명] (예시) k=4, 30번 초밥을 쿠폰 획득일 경우 - 가능한 모든 경우의 수 (7,9,7,30),(9,7,30,2),(7,30,2,7),(30,2,7,9),(2,7,9,25),(7,9,25,7),(9,25,7,9),(25,7,9,7) - 최대한 많은 종류를 먹어야해서 초밥.. 2023. 10. 23.