본문 바로가기

분류 전체보기

(215)
백준 15650 N과 M (2) (Java) 1. 문제 링크 15650번: N과 M (2) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 2. 문제 및 입출력예제 3. 문제 풀이 N과 M 문제를 조금만 바꾸면 된다. 카운트를 하는 c와 시작 값인 s를 이용해서 조합하면 된다. 4. 코드 import java.util.ArrayList; import java.util.Arrays; import java.util.Scanner; public class Main { private static StringBuilder sb = new StringBuilder(); private stati..
백준 15649 N과 M (Java) 1. 문제 링크 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 2. 문제 및 입출력예제 3. 문제 풀이 순열을 구하는 대표적인 문제이다. input 배열은 1부터 N까지의 자연수가 들어간다. isSelected는 선택된 수인지 아닌지 boolean값으로 판단한다. 선택되지 않은 숫자의 경우 numbers에 넣고 isSelected를 true로 바꿔 선택했음을 알린다. permutation 재귀를 통해 종료되기 전까지 반복한 후에 isSelected를 false로 바꾸면 끝이다. 4. 코드 import jav..
백준 9095 1, 2, 3 더하기 (Java) 1. 문제 링크 9095번: 1, 2, 3 더하기 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다. www.acmicpc.net 2. 문제 및 입출력예제 3. 문제 풀이 n은 최대 10이다. 근데 4를 만들때 쓴 녀석들에 1씩을 더하면 5를 만들 수 있다. 그니까 각자 만든거에 1을 더한 경우들을 더하고 각 숫자만 넣으면 되는것 같다. 1은 1 (1개) 2는 11 2 (2개) 3은 111 21 12 3 (4개) 4는 1/111 1/21 1/12 1/3 111/1(중복) 21/1 12/1(중복) 3/1 11/2(중복) 2/11(1과 3의 경우, 2끼리 경우의 합) => 4는 1111 112 121 211 22 13 31 (7개) 1 2 4 5는 1과 4, 2와 3 1 다음..
백준 17478 재귀함수가 뭔가요? (Java) 1. 문제 링크 17478번: 재귀함수가 뭔가요? 평소에 질문을 잘 받아주기로 유명한 중앙대학교의 JH 교수님은 학생들로부터 재귀함수가 무엇인지에 대하여 많은 질문을 받아왔다. 매번 질문을 잘 받아주셨던 JH 교수님이지만 그는 중앙대 www.acmicpc.net 2. 문제 및 입출력예제 3. 문제 풀이 문제 이름 그대로 재귀를 활용해서 문제를 풀었다. 4. 코드 import java.util.Scanner; public class Main { static int N; static StringBuilder sb; private static void again(int i) { String str = "____"; if(i>0) { for(int a=0;a
백준 1476 날짜 계산 (Java) 1. 문제 링크 1476번: 날짜 계산 준규가 사는 나라는 우리가 사용하는 연도와 다른 방식을 이용한다. 준규가 사는 나라에서는 수 3개를 이용해서 연도를 나타낸다. 각각의 수는 지구, 태양, 그리고 달을 나타낸다. 지구를 나타 www.acmicpc.net 2. 문제 및 입출력예제 3. 문제 풀이 반복문을 돌면서 연도와 E, S, M 전부 1씩 플러스한다. E가 16, S가 29, M이 20이 되면 끝이다. 4. 코드 import java.io.BufferedReader; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws Exception { BufferedReader br =..
백준 3085 사탕 게임 (Java) 1. 문제 링크 3085번: 사탕 게임 예제 3의 경우 4번 행의 Y와 C를 바꾸면 사탕 네 개를 먹을 수 있다. www.acmicpc.net 2. 문제 및 입출력예제 3. 문제 풀이 인접한 사탕이 다른 색일 경우 바꾸면서 최댓값을 찾는다. 사방탐색을 하려고 했는데 교환이라서 오른쪽과 아래쪽만 확인해도 전부 볼 수 있다. 교환 전 후로 값을 바꿔주는 과정을 넣어서 원래 배열을 유지하게 했다. 4. 코드 import java.io.BufferedReader; import java.io.InputStreamReader; public class Main { private static int N; private static int max = 0; public static void main(String[] arg..
백준 1107 리모컨 (Java) 1. 문제 링크 1107번: 리모컨 첫째 줄에 수빈이가 이동하려고 하는 채널 N (0 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 고장난 버튼의 개수 M (0 ≤ M ≤ 10)이 주어진다. 고장난 버튼이 있는 경우에는 셋째 줄에는 고장난 버튼 www.acmicpc.net 2. 문제 및 입출력예제 3. 문제 풀이 고장난 버튼을 boolean[] 배열에 담았다. 채널 변경은 +/- 버튼과 숫자 버튼을 이용해 이동할 수 있다. 고장나지 않은 버튼을 모두 눌러보면서 완전탐색을 진행했다. 채널 이동 범위를 설정하지 않으면 stackoverflow가 발생해서 추가했고 재귀 전에 검사하도록 해서 시간이 조금 많이 줄어들었다. 4. 코드 import java.io.BufferedReader; import jav..
백준 7785 회사에 있는 사람 (Java) 1. 문제 링크 7785번: 회사에 있는 사람 첫째 줄에 로그에 기록된 출입 기록의 수 n이 주어진다. (2 ≤ n ≤ 106) 다음 n개의 줄에는 출입 기록이 순서대로 주어지며, 각 사람의 이름이 주어지고 "enter"나 "leave"가 주어진다. "enter"인 경우는 www.acmicpc.net 2. 문제 및 입출력예제 3. 문제 풀이 간단하게 생각해서 enter가 들어오면 추가하고 leave가 들어오면 삭제하면 된다. 동명이인이 없다는 조건이 있어서 HashSet을 사용해봤다. 마지막에는 정렬을 위해 HashSet을 List로 변환했고 사전의 역순으로 출력하면 끝이다. Collections.reverse()로 했다가 2%? 4%?에서 틀렸습니다가 나왔고, 알고보니 그냥 리스트를 역으로 출력했던 거..