본문 바로가기

Problem Solving/SWEA147

[SWEA] 4751. 다솔이의 다이아몬드 장식 문제 다솔이는 어떤 문자열이 주어졌을 때, 장식을 하려고 한다. 장식하는 방법은 다음과 같다. 한 개의 문자가 입력되었을 때, 5개의 문자가 입력되었을 때, 입력으로 단어가 주어졌을 때 출력으로 장식된 단어를 구하는 문제 풀이방법 입력된 단어의 길이를 k라고 하면 출력결과는 5 X (4k - 1) 크기의 2차원 배열로 나타낼 수 있다. 각 행마다 일정한 패턴을 가지고 있으며 그 패턴은 다음과 같이 구할 수 있다. 1) 0행, 4행 : 2, 6, 10, ... 번째 열에 '#'이 들어가고 나머지 원소는 '.' 2) 1행, 3행 : 짝수 열에는 '.', 홀수 열에는 '#' 3) 2행 : 4의 배수 열에 '#', 홀수 열에는 '.' 2, 6, 10, ...번 째 열에는 입력된 문자열 소스코드 package s.. 2020. 2. 21.
[SWEA] 4676. 늘어지는 소리 만들기 문제 단어에 '-'(하이픈)을 넣어 늘어지는 단어를 만드려고 한다. 예를 들어 'wow'라는 문자열이 입력되었을 때, 'o' 뒤편에 두 개의 하이픈을, 'w'뒤편에 한 개의 하이픈을 넣어 'wo--w-'을 만든다. 단어와 아이픈의 인덱스가 주어질 때, 늘어진 단어를 구하는 문제 풀이방법 입력된 문자열에 하이픈을 삽입한다. 단, 단어의 앞쪽부터 삽입하면 단어의 인덱스가 삽일할 때 마다 변경되므로 뒤쪽부터 삽입한다. 소스코드 package samsung; import java.util.*; public class s_4676 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int test = sc.nextInt().. 2020. 2. 21.
[SWEA] 4466. 최대 성적표 만들기 문제 n개의 성적이 입력되었을 때, k개의 성적을 뽑아 총합 출력한다. 이 때, k개의 성적 총합의 최댓값을 구하는 문제 풀이방법 그리디 알고리즘으로 입력된 성적을 내림차순으로 정력하고 앞에서 부터 k개의 성적을 뽑아 총합을 출력한다. 소스코드 package samsung; import java.util.*; public class s_4466 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int test = sc.nextInt(); for(int t = 1; t 2020. 2. 21.
[SWEA] 4406. 모음이 보이지 않는 사람 문제 영어로 이루어진 문자열이 주어졌을 때, 모음을 제외한 자음만을 출력하는 문제 풀이방법 문자열에서 각 문자마다 탐색해서 'a', 'e', 'i', 'o', 'u' 중 하나와 일치하면 출력결과에서 제외시킨다. 소스코드 package samsung; import java.util.*; public class s_4406 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int test = sc.nextInt(); for(int t = 1; t 2020. 2. 21.
[SWEA] 4047. 영준이의 카드 카운팅 문제 트럼프카드는 하트, 다이아, 클럽, 스페이스 네가지 종류가 있으며 각 카드마다 1 ~ 10, J, K, Q 13장의 카드가 있다 즉 카드는 총 52장의 카드가 있다. 영준이가 받은 카드가 문자열로 주어질 때, 영준이가 받지 않은 나머지 카드가 몇 개 존재하는 지 구하는 문제 풀이방법 1) 각 하트, 다이아, 클럽, 스페이스 마다 길이 14의 배열을 만들고 0으로 초기화한다. 2) 입력된 문자열을 3의 길이로 나누어 영준이가 받은 카드가 어떤 것인지 구분한다. 3) 각 배열에서 영준이가 받은 카드를 1로 표시해준다. 4) 영준이가 받은 카드를 모두 체크해준 다음 각 배열에서 0의 갯수를 센다. 소스코드 package samsung; import java.util.*; public class s_404.. 2020. 2. 21.
[SWEA] 3499. 퍼펙트 셔플 문제 퍼펙트 셔플이란 카드 덱을 정확히 전반으로 나누고 나눈 것들에서 교대로 카드를 뽑아 새로운 덱을 만드는 것이다. n개의 카드가 주어질 때, 퍼펙트 셔플한 결과를 구하는 문제 풀이방법 입력된 n개의 카드를 배열에 담고 절반으로 나누어 다시 두 배열에 나누어 담는다. 그런다음 두 배열을 교차해가면서 출력해준다. 소스코드 package samsung; import java.util.*; public class s_3499 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int test = sc.nextInt(); for(int t = 1; t 2020. 2. 21.
[SWEA] 3456. 직사각형 길이 찾기 문제 직사각형 세 변의 길이가 주어질 때 나머지 한 변의 길이를 구하는 문제 풀이방법 직사각형은 마주보는 두 변의 길이가 같으므로 길이가 같은 두 쌍의 변이 존재한다. 따라서 입력된 변의 길이 3개중 하나만 존재하는 값을 찾는다. 소스코드 package samsung; import java.util.*; public class s_3456 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int test = sc.nextInt(); for(int t = 1; t 2020. 2. 21.
[SWEA] 3431. 준환이의 운동관리 문제 준환이는 L분 이상 U분 이하의 운동을 해야한다. 준환이가 이번 주 한 운동 X분이 주어질 때, 제한시간을 넘어 운동한 건지 아니라면 얼마나 더 운동해야하는 지 구하는 문제 풀이방법 l u x 가 순서대로 주어질 때 x가 l보다 작을 때, x가 l이상 u이하 일때, x가 u 초과일 때 세가지 경우를 찾는다. 소스코드 package samsung; import java.util.*; public class s_3431 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int test = sc.nextInt(); for(int t = 1; t 2020. 2. 21.
[SWEA] 3314. 보충학습과 평균 문제 n명의 점수가 0~100까지 주어진다. 이 때, 40점 미만인 학생은 보충수업을 통해 40점을 맞춘다. 보충학습이 끝난 뒤 학생들의 평균점수를 구하는 문제 풀이방법 각 점수를 입력받을 때, 40미만인 숫자가 입력될 경우 40으로 바꾸어 각 수를 합산하고 평균을 구한다. 소스코드 package samsung; import java.util.*; public class s_3314 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int test = sc.nextInt(); for(int t = 1; t 2020. 2. 21.
[SWEA] 3131. 100만 이하의 모든 소수 문제 100만 이하의 모든 수를 구하는 문제 풀이방법 2, 3, 4, ..., i, ..., 1,000,000까지 소수검사를 한다. 각 숫자를 소수 검사할 때, i의 제곱근까지만 나누어 지는지 확인하면 i가 소수인지 판별할 수 있다. 소스코드 package samsung; import java.util.*; public class s_3131 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); for(int i = 2; i < 1000000; i++) { int flag = 0; for(int j = 2; j 2020. 2. 21.
[SWEA] 2806. N-Queen 문제 N X N 크기의 체스판이 주어지고 queen을 체스판에 위치시켜야한다. 이 때 queen은 가로, 세로, 대각선 방향으로 공격할 수 있다. n개의 queen을 체스판에 위치시켜야할 때, 서로 공격할 수 없는 위치에 둘 수 있는 모든 경우의 수를 구하는 문제 풀이방법 dfs(깊이 우선 탐색)과 backtracking(되추적)을 사용해 풀 수 있는 대표적인 문제로, 완전 탐색으로 모든 경우의 수를 찾되, 유망하지 않은 경우 배제하여 탐색 시간을 높인다. 소스코드 package samsung; import java.util.*; public class s_2806 { static int n, cnt; static int[] col; public static boolean isPromising(int c.. 2020. 2. 21.
[SWEA] 1221. [S/W 문제해결 기본] 5일차 - GNS 문제 "ZRO", "ONE", "TWO", "THR", "FOR", "FIV", "SIX", "SVN", "EGT", "NIN" 위와 같은 0 ~ 9를 나타내는 단어로 이루어진 문자열이 주어질 때, 오름차순으로 정렬하여 출력 풀이방법 각 단어를 배열에 담고 인덱스에 매핑시켜 문제 해결 소스코드 package samsung; import java.util.*; public class s_1221 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int test = sc.nextInt(); String[] num = {"ZRO", "ONE", "TWO", "THR", "FOR", "FIV", "SIX", "SVN",.. 2020. 2. 21.