본문 바로가기
반응형

백준58

백준 10974. 모든 순열 🅰 백준 10974. 모든 순열 10974번: 모든 순열 N이 주어졌을 때, 1부터 N까지의 수로 이루어진 순열을 사전순으로 출력하는 프로그램을 작성하시오. www.acmicpc.net ✏️ 문제 풀이 모든 순열은 다음순열이랑 똑같은 문제이다. 다만 들어오는 데이터를 1부터 N까지 따로 저장을 해줘서 np를 수행해 주면 된다. ✏️ 소스코드 package bruteforce; import java.io.*; public class Main_실버3_10974_손은성 { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); St.. 2021. 8. 26.
백준 10973. 이전순열 🅰 백준 10973. 이전순열 10973번: 이전 순열 첫째 줄에 입력으로 주어진 순열의 이전에 오는 순열을 출력한다. 만약, 사전순으로 가장 처음에 오는 순열인 경우에는 -1을 출력한다. www.acmicpc.net ✏️ 문제 풀이 이전순열은 다음순열과 마찬가지로 np를 이용해서 풀었다. 하지만 내림차순으로 정렬되어야 하기 때문에 앞에서 부터 탐색을 하기 위해 np함수 내 데이터의 부등호만 변경해주었다. ✏️ 소스코드 package bruteforce; import java.io.*; import java.util.*; public class Main_실버3_10973_손은성 { public static void main(String[] args) throws Exception{ BufferedRead.. 2021. 8. 26.
백준 10972. 다음 순열 🅰 백준 10972. 다음 순열 10972번: 다음 순열 첫째 줄에 입력으로 주어진 순열의 다음에 오는 순열을 출력한다. 만약, 사전순으로 마지막에 오는 순열인 경우에는 -1을 출력한다. www.acmicpc.net ✏️ 문제 풀이 자바에는 없는 next-permutation을 구현하는 문제이다. 먼저 입력 배열을 오름차순으로 정렬하는 것이 중요하다. 정렬 후 np함수를 통해 데이터를 출력한다. np에 대한 내용은 따로 정리해서 올리겠다. ✏️ 소스코드 package bruteforce; import java.util.*; import java.io.*; public class Main_실버3_10972_손은성 { public static void main(String[] args) throws Exce.. 2021. 8. 26.
백준 1476. 날짜 계산 🅰 백준 1476. 날짜 계산 1476번: 날짜 계산 준규가 사는 나라는 우리가 사용하는 연도와 다른 방식을 이용한다. 준규가 사는 나라에서는 수 3개를 이용해서 연도를 나타낸다. 각각의 수는 지구, 태양, 그리고 달을 나타낸다. 지구를 나타 www.acmicpc.net ✏️ 문제 풀이 전체 데이터가 7980밖에 안되므로 for문을 이용하여 돌려주었다. 들어오는 년도를 각각의 세 수의 차 % 각 수의 년도를 해주었을 때 전부 0이 나오는 년도가 정답이다. ✏️ 소스코드 package bruteforce; import java.util.*; import java.io.*; public class Main_실버5_1476_손은성 { public static void main(String[] args) thr.. 2021. 8. 26.
백준 11723. 집합 🅰 백준 11723. 집합 11723번: 집합 첫째 줄에 수행해야 하는 연산의 수 M (1 ≤ M ≤ 3,000,000)이 주어진다. 둘째 줄부터 M개의 줄에 수행해야 하는 연산이 한 줄에 하나씩 주어진다. www.acmicpc.net ✏️ 문제 풀이 비트마스크를 이용하여 푸는 문제이다 string.startsWith를 이용하여 각 문자열로 시작되면 데이터를 수정하게 하였다. 각 문자열 마다 연산해야 할 x의 위치가 정해져 있기 때문에 string.subString을 이용하여 x부터 끝까지 문자열을 읽어서 int형으로 변환하였다 변환 후 각 연산문자열에 맞춰 비트마스크를 이용하여 답을 구현하였다. ✏️ 소스코드 package bruteforce; import java.io.BufferedReader; i.. 2021. 8. 26.
백준 16926. 배열 돌리기1 🅰 백준 16926. 배열 돌리기1 16926번: 배열 돌리기 1 크기가 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] www.acmicpc.net ✏️ 문제 풀이 먼저 배열이 주어졌을 때 돌려야 하는 배열의 개수를 구하는 것이 중요했다. 가로와 세로 중 최소값 / 2만큼 배열을 회전 시켜야한다. rotate함수를 이용하여 4가지 방향으로 회전을 시켜주었다. ✏️ 소스코드 package _0811; import java.util.Scanner; public class Main_실버.. 2021. 8. 20.
백준 2563. 색종이 🅰 백준 2563. 색종이 2563번: 색종이 첫째 줄에 색종이의 수가 주어진다. 이어 둘째 줄부터 한 줄에 하나씩 색종이를 붙인 위치가 주어진다. 색종이를 붙인 위치는 두 개의 자연수로 주어지는데 첫 번째 자연수는 색종이의 왼쪽 변 www.acmicpc.net ✏️ 문제 풀이 겹치는 부분만 구하면 쉽게 풀 수 있다. 색종이를 2차원 배열로 생성하고, 10x10 색종이가 들어오면 그 위치에 1을 더해주었다. 만약 10x10 색종이 면적 내 1 이상인 부분이 있으면 겹치는 부분이므로 따로 cnt를 해주고 마지막에 전체 면적-cnt를 해줘서 영역의 넓이를 구해주었다. ✏️ 소스코드 package _0810; import java.util.Scanner; public class Main_실버5_2563_손은성.. 2021. 8. 20.
백준 1987. 알파벳 🅰 백준 1987. 알파벳 1987번: 알파벳 세로 R칸, 가로 C칸으로 된 표 모양의 보드가 있다. 보드의 각 칸에는 대문자 알파벳이 하나씩 적혀 있고, 좌측 상단 칸 (1행 1열) 에는 말이 놓여 있다. 말은 상하좌우로 인접한 네 칸 중의 한 칸으 www.acmicpc.net ✏️ 문제 풀이 dr, dc배열을 사용하여 위,아래,좌,우 방향을 저장해주었고 A-Z 까지 아스키코드-65를 해줘서 boolean형 check배열의 크기를 26으로 설정해주었다 (0 : 'A', 1 : 'B' .... 26 : 'Z') 방문한 알파벳은 check에 true표시를 해주었고, 재귀함수 수행 후 다시 돌아왔으면 이전에 방문한 위치를 다시 false표시 해주어서 다른 길로도 갈 수 있도록 해주었다. 알파벳을 방문할 때 .. 2021. 8. 20.
백준 3109. 빵집 🅰 백준 3109. 빵집 3109번: 빵집 유명한 제빵사 김원웅은 빵집을 운영하고 있다. 원웅이의 빵집은 글로벌 재정 위기를 피해가지 못했고, 결국 심각한 재정 위기에 빠졌다. 원웅이는 지출을 줄이고자 여기저기 지출을 살펴보던 www.acmicpc.net ✏️ 문제 풀이 오른쪽으로만 가는 방향만 생각하면 된다. 오른쪽 위, 오른쪽, 오른쪽 아래를 탐색 후 갈 수 있으면 간 후에 지나온 길은 true로 방문 표시해준다. 기저조건으로 파이프가 빵집의 위치인 C-1에 도착했다면 return을 해주고 다른 케이스들이 재귀를 돌면서 추가 파이프가 생기지 않게 하기 위해 check를 true로 설정해주었다. 맨 윗줄, 맨 아래줄은 case를 따로 구분해 주었으며, 만약 방문하였는데 길이 막혀있다면 backtrack.. 2021. 8. 20.