본문 바로가기

전체 글154

[ 백준 9663 ] N - Queen 문제 N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N이 주어진다. (1 ≤ N < 15) 풀이 백트래킹 알고리즘의 대표 문제라고 한다. 문제에 체스 규칙에 대한 설명이 없어서 당황했으나, 규칙을 인터넷으로 찾아보고 풀었다. 퀸은 대각선이나 같은 줄 (행,열) 에서 오직 1개만 있어야 서로를 공격할 수 없다는 규칙이 있다. 현재 대각선에 퀸이 존재하는지 확인을 위해, 대각선의 기울기는 1이라는 규칙을 이용하여 Math.abs 함수를 사용하였다. 출력 첫째 줄에 퀸 N개를 서로 공격할 수 없게 놓는 경우의 수를 출력한다. 예제 입력 예제 출력 8 92 [ JAVA ] 2021. 4. 9.
[ JAVA ] BufferedReader, BufferedWriter BufferedReader 많은 양의 데이터를 입력받을 때 Scanner 보다 효율성이 있음 // import java.io.*; 필수 // 해당 메소드에 throw IOException 추가 필수 BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); String str = bf.readLine(); // String 타입으로 받음 BufferedWriter 출력 방식 또한 많은 양의 데이터를 출력 시 System.out.print 보다 효율성이 있음 // import java.io.*; 필수 // 해당 메소드에 throw IOException 추가 필수 BufferedWriter bw = new BufferedWriter(n.. 2021. 4. 3.
[ 백준 15652 ] N 과 M (4) 문제 자연수 N과 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. 1부터 N까지 자연수 중에서 M개를 고른 수열 같은 수를 여러 번 골라도 된다. 고른 수열은 비내림차순이어야 한다. 길이가 K인 수열 A가 A1 ≤ A2 ≤ ... ≤ AK-1 ≤ AK를 만족하면, 비내림차순이라고 한다. 입력 첫째 줄에 자연수 N과 M이 주어진다. (1 ≤ M ≤ N ≤ 8) 출력 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해야 한다. 예제 입력 예제 출력 4 2 1 1 1 2 1 3 1 4 2 2 2 3 2 4 3 3 3 4 4 4 .. 2021. 4. 3.
[ 백준 15651 ] N 과 M (3) 문제 자연수 N과 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. 1부터 N까지 자연수 중에서 M개를 고른 수열 같은 수를 여러 번 골라도 된다. 입력 첫째 줄에 자연수 N과 M이 주어진다. (1 ≤ M ≤ N ≤ 7) 출력 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해야 한다. 예제 입력 예제 출력 4 2 1 1 1 2 1 3 1 4 2 1 2 2 2 3 2 4 3 1 3 2 3 3 3 4 4 1 4 2 4 3 4 4 풀이 처음에 풀고 제출했을 때에는 시간초과 오류가 났다. 원인을 알아보니 보통 Scanner 와 S.. 2021. 4. 3.
[ 백준 15650 ] N 과 M (2) 문제 자연수 N과 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. 1부터 N까지 자연수 중에서 중복 없이 M개를 고른 수열 고른 수열은 오름차순이어야 한다. 입력 첫째 줄에 자연수 N과 M이 주어진다. (1 ≤ M ≤ N ≤ 8) 출력 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해야 한다. 예제 입력 예제 출력 4 2 1 2 1 3 1 4 2 3 2 4 3 4 풀이 직전에 풀었던 N 과 M (1) 문제에서 중복 부분이 빠진 문제라서, 푸는데 어렵지는 않았다. [ JAVA ] 2021. 4. 3.
[ 백준 15649 ] N 과 M (1) 문제 자연수 N과 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. 1부터 N까지 자연수 중에서 중복 없이 M개를 고른 수열 입력 첫째 줄에 자연수 N과 M이 주어진다. (1 ≤ M ≤ N ≤ 8) 출력 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해야 한다. 예제 입력 예제 출력 4 2 1 2 1 3 1 4 2 1 2 3 2 4 3 1 3 2 3 4 4 1 4 2 4 3 풀이 백트래킹 알고리즘을 사용하는 문제이다. 코드를 너무 이상하게 짜서 나중에 다시 풀어볼 예정 [ JAVA ] 2021. 4. 2.