본문 바로가기

Problem Solving/SWEA147

[SWEA] 1216. [S/W 문제해결 기본] 3일차 - 회문2 문제 N X N 크기의 문자로 이루어진 2차원 배열이 주어질 때, 가로, 세로 방향의 회문 중 가장 긴 회문의 길이를 구하는 문제 풀이방법 완전 탐색으로 가로 새로 1 ~ n-1 크기의 회문을 모두 탐색하고 그 중 가장 큰 회문의 길이를 출력. 소스코드 package samsung; import java.util.*; public class s_1216 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); for(int t = 1; t 2020. 2. 21.
[SWEA] 3142. 영준이와 신비한 뿔의 숲 문제 뿔이 한 개 달린 유니콘과 뿔이 두 개 달린 트윈혼이 살고 있다. n개의 뿔과 m마리의 짐승가 주어질 때, 유니콘과 트윈혼의 마리 수를 구하는 문제 풀이방법 트윈혼의 마리 수를 k라고 할 때, 유니콘의 마리 수는 m-k이다. 따라서, 2*k + (m-k)가 n일 때, k값과 m-k값을 출력 소스코드 package samsung; import java.util.*; public class s_3142 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int test = sc.nextInt(); for(int t = 1; t 2020. 2. 16.
[SWEA] 2805. 농작물 수확하기 문제 위와 같은 방식으로 농작물을 수확한다. n * n 크기의 2차원 배열이 주어질 때, 수확한 농작물의 값을 구하는 문제 풀이방법 주어진 2차원 배열을 a[n][n]이라고 할 때, a[0][n/2] a[1][n/2-1] a[1][n/2] a[1][n/2+1] a[2][n/2-2] a[2][n/2-1] a[2][n/2] a[2][n/2+1] a[2][n/2+2] ... a[n-2][n/2-1] a[n-2][n/2] a[n-2][n/2+1] a[n-1][n/2] 의 패턴으로 농작물을 수확한다. 소스코드 package samsung; import java.util.*; public class s_2805 { public static void main(String[] args) { Scanner sc = ne.. 2020. 2. 16.
[SWEA] 1213. [S/W 문제해결 기본] 3일차 - String 문제 문장과 단어가 주어질 때, 문장에서 단어가 몇 개 존재하는지 찾는 문제 풀이방법 문자열에서 단어의 길이만큼 증가시켜 탐색하며 해당 단어와 일치하는지 비교 소스코드 package samsung; import java.util.*; public class s_1213 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); for(int t = 1; t 2020. 2. 16.
[SWEA] 1209. [S/W 문제해결 기본] 2일차 - Sum 문제 100 X 100 크기의 2차원 배열이 주워졌을 때, 가로, 세로, 대각선의 합 중 최댓값을 구하는 문제 풀이방법 완전탐색으로 각 행과 열, 대각선의 합을 구해서 최댓값을 찾는다. 소스코드 package samsung; import java.util.*; public class s_1209 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); for(int t = 1; t sum2) ? sum1 : sum2), max); System.out.println("#" + t + " " + max); } } } 2020. 2. 16.
[SWEA] 1208. [S/W 문제해결 기본] 1일차 - Flatten 문제 위와 같이 상자가 쌓여있을 때 ,가장 높게 쌓인 상자를 가장 낮게 쌓인 상자쪽으로 옮기는 평탄화 작업을 한다. 1cycle에 한 개의 상자를 옮길 때, 입력된 값만큼의 사이클을 반복했을 때, 가장 높게 쌓인 상자와 낮게 쌓인 상자를 차이를 구하는 문제 풀이방법 1) 매 사이클 마다 가장 높게 쌓인 상자와 낮게 쌓인 상자를 찾는다 2) 가장 높게 쌓인 상자의 갯수를 1 감소시키고 낮게 쌓인 상자의 갯수를 1 증가시킨다. 3) 이렇게 n번 반복했을 때 가장 높은 상자와 낮은 상자의 차를 구한다. 소스코드 package samsung; import java.util.*; public class s_1208 { public static void main(String[] args) { Scanner sc =.. 2020. 2. 16.
[SWEA] 1206. [S/W 문제해결 기본] 1일차 - View 문제 아래와 같이 강변에 8채의 빌딩이 있을 때, 연두색으로 색칠된 여섯 세대에서는 좌우로 2칸 이상의 공백이 존재하므로 조망권이 확보된다. 이 때, 조망권이 확보되는 세대 수를 구하는 문제 풀이방법 1) 완전 탐색으로 각 빌딩마다 좌, 우 2칸 씩 조망권이 확보되는지 확인 2) 조망권이 확보될 경우 좌, 우 2칸 중 가장 높은 빌딩과의 차를 구한다. 소스코드 package samsung; import java.util.*; public class s_1206 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); for(int t = 1; t 2020. 2. 16.
[SWEA] 1959. 두 개의 숫자열 문제 N 개의 숫자로 구성된 숫자열 Ai (i=1~N) 와 M 개의 숫자로 구성된 숫자열 Bj (j=1~M) 가 주어졌을 때, 각 원소 값의 곱이 최대가 되는 값을 구하는 문제 예를 들어, A = [1, 2, 3] B = [3, 4, 5, 6, 7] 가 주어졌을 때, case 1) [1, 2, 3] * [3, 4, 5] (1 * 3) + (2 * 4) + (3 * 5) = 26 case 2) [1, 2, 3] * [4, 5, 6] (1 * 4) + (2 * 5) + (3 * 6) = 32 case 3) [1, 2, 3] * [5, 6, 7] (1 * 5) + (2 * 6) + (3 * 7) = 38 최대값은 38이 된다. 풀이방법 1) 입력된 두 배열 중 길이가 짧은 배열을 구한다 2) 길이가 긴 배열의.. 2020. 2. 15.
[SWEA] 1217. [S/W 문제해결 기본] 4일차 - 거듭 제곱 문제 재귀 호출로 거듭제곱을 구하는 함수 구현 풀이방법 n(밑), m(지수)이 입력되었을 때, m = 1일 될 때까지 m의 값을 1씩 빼면서 재귀 호출 소스코드 package samsung; import java.util.*; public class s_1217 { public static int pow(int x, int y) { if(y == 0) return 1; return x * pow(x, y-1); } public static void main(String[] args) { Scanner sc = new Scanner(System.in); for(int t = 1; t 2020. 2. 15.
[SWEA] 1215. [S/W 문제해결 기본] 3일차 - 회문1 문제 2차원 배열에 입력된 문자 중 입력된 데이터 만큼의 길이를 갖는 회문의 갯수를 구하는 문제 풀이방법 2차원 배열을 행과 열을 완전탐색하면서 입력된 갯수만큼의 문자열을 만들고 이 문자열이 회문일 경우를 찾는다. 소스코드 package samsung; import java.util.*; public class s_1215 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); for(int t = 1; t 2020. 2. 15.
[SWEA] 1954. 달팽이 숫자 문제 달팽이 행렬을 구하는 문제 풀이방법 달팽이 행렬의 패턴을 찾는다 소스코드 package samsung; import java.util.*; public class s_1954 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int test = sc.nextInt(); for(int t = 1; t 2020. 2. 9.
[SWEA] 1948. 날짜 계산기 문제 월 일로 이루어진 날짜를 2개 입력 받아, 두 번째 날짜가 첫 번째 날짜의 며칠째인지 출력하는 프로그램을 작성하라. 풀이방법 입력받은 두 날짜가 같은 월일 경우 일 수의 차이만 구하고, 다른 월일 경우 월을 차까지 구한다. 소스코드 package samsung; import java.util.*; public class s_1948 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int t = sc.nextInt(); int[] m = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; for(int i = 1; i 2020. 2. 9.