본문 바로가기

Problem Solving/SWEA147

[SWEA] 1230. 암호문3 문제 원본 문서는 너비가 10인 여러 줄의 문자열로 이루어져 있다. 압축한 문서는 알파벳과 그 알파벳의 연속된 개수로 이루어진 쌍들이 나열되어 있다. (예 : A 5  AAAAA) 압축된 문서를 입력 받아 원본 문서를 만드는 프로그램을 작성하시오. 풀이방법 입력받은 순서대로 문자의 개수만큼 문자를 리스트에 담고 출력한다. 이 때, 10을 단위로 개행해준다. 소스코드 package samsung; import java.util.*; public class s_1946 { 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] 1945. 간단한 소인수분해 문제 N=2^a x 3^b x 5^c x 7^d x 11^e N이 주어질 때 a, b, c, d, e 를 출력하라. 풀이방법 2, 3, 5, 7, 11 인수 중 하나씩 입력받은 수를 나누고 몫을 또 다음 인수로 나눈다. 소스코드 package samsung; import java.util.*; public class s_1945 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int t = sc.nextInt(); for(int i = 0; i < t; i++) { int[] a = new int[5]; int[] b = {2, 3, 5, 7, 11}; int n = sc.nextInt(); for(;;) { .. 2020. 2. 9.
[SWEA] 1289. 원재의 메모리 복구하기 문제 0,1로 이루어진 숫자가 입력되었을 때, 같은 길이의 0으로 이루어진 숫자를 입력된 숫자와 같이 바꾸는 문제. 단, 한 숫자를 0 -> 1, 1 -> 0으로 바꿀 경우 해당 값부터 맨 끝까지 모두 동일한 수로 바꾼다. 입력된 데이터와 같은 수로 바꾸기 위해 최소 몇 번의 수를 바꿔야하는지 구하라. 풀이방법 입력된 수의 인접한 두 값이 다른 횟수를 찾는다. 단, 첫번째 입력 값이 1부터 시작될 경우 횟수를 한 번 더 추가해준다. 소스코드 package samsung; import java.util.*; public class s_1289 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int test = s.. 2020. 2. 9.
[SWEA] 1285. 아름이의 돌 던지기 문제 밀리미터 단위로 -100,000에서 100,000까지의 숫자가 일렬로 써져 있을 때, 100,000이 써져 있는 위치에 서서 최대한 0에 가까운 위치로 돌을 던지려고 한다. N명의 사람들이 던진 돌이 떨어진 위치를 측정한 자료가 주어질 때, 가장 0에 가깝게 돌이 떨어진 위치와 0 사이의 거리 차이와 몇 명이 그렇게 돌을 던졌는지를 구하는 프로그램을 작성하라. 풀이방법 입력된 데이터 중에서 절대값이 가장 작은 수들을 구한다 소스코드 package samsung; import java.util.*; public class s_1285 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int test = sc... 2020. 2. 9.
[SWEA] 1234. 비밀번호 문제 0~9로 이루어진 번호 문자열에서 같은 번호로 붙어있는 쌍들을 소거하고 남은 번호를 비밀번호로 만든다 번호 쌍이 소거되고 소거된 번호 쌍의 좌우번호가 같은 번호이면 계속해서 소거 가능 풀이방법 데이터의 삭제에 대해 연산 수를 줄이기 위해 연결리스트를 사용해서 나열된 수를 입력받은 후, 인접한 데이터가 같은 값이 없을 때까지 삭제를 반복 소스코드 package samsung; import java.util.*; public class s_1234 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); for(int t = 1; t = l.size()) break; } System.out.print("#" + t +.. 2020. 2. 9.
[SWEA] 1230. 암호문3 문제 0 ~ 999999 사이의 수가 나열된 암호문이 있을 때, 명령에 따라 암호문을 수정하는 문제 명령문> I(삽입) x, y, s : x는 삽입할 인덱스, y는 삽입할 숫자의 수, s는 삽입할 숫자들 D(삭제) x, y : x는 삭제할 데이터의 인덱스, y는 삭제할 데이터의 수 A(추가) y, s : 암호문의 맨 뒤에 y개의 숫자를 덧붙인다. s는 덧붙일 숫자들 풀이방법 데이터의 삽입이 많은 문제로 연결리스트 구조를 사용해 연산의 수를 줄인다 소스코드 package samsung; import java.util.*; public class s_1230 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); for(.. 2020. 2. 9.
[SWEA] 1229. 암호문2 문제 0 ~ 999999 사이의 수가 나열된 암호문이 있을 때, 명령에 따라 암호문을 수정하는 문제 명령문> I(삽입) x, y, s : x는 삽입할 인덱스, y는 삽입할 숫자의 수, s는 삽입할 숫자들 D(삭제) x, y : x는 삭제할 데이터의 인덱스, y는 삭제할 데이터의 수 풀이방법 데이터의 삽입이 많은 문제로 연결리스트 구조를 사용해 연산의 수를 줄인다 소스코드 package samsung; import java.util.*; public class s_1229 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); for(int t = 1; t = 0; j--) { l.add(idx, a[j]); } }el.. 2020. 2. 9.
[SWEA] 1940. 가랏! RC카! 문제 각 옵션과 옵션에 따른 속도가 주어졌을 때, RC카가 이동한 거리를 구하는 문제 옵션> 0 : 현재 속도 유지. 1 : 가속 2 : 감속 풀이방법 옵션에 따라 현재 속력에서 입력받는 속도를 가감해준다.(단, 속력는 0보다 작아지지 않는다) 소스코드 package samsung; import java.util.*; public class s_1940 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int test = sc.nextInt(); for(int t = 1; t acc) acc = 0; else acc = acc - sub; } distance += acc; } System.out.println(".. 2020. 2. 5.
[SWEA] 1288. 새로운 불면증 치료법 문제 n이 입력으로 주어졌을 때, 1*n, 2*n, 3*n, ... , i*n으로 증가시켜가며 각 숫자의 자리수가 숫자를 체크하며, 0~9까지의 모든 수가 나왔을 때, i를 구하는 문제 풀이방법 10 크기의 배열을 선언하고 각 n의 배수의 자리수를 체크한다. 예를 들어, n = 1234 일때, i = 1이면, i*n은 1234이므로, 체크된 수는 1, 2, 3, 4 i = 2이면, i*n은 2468이므로, 이전에 체크된 수와 함께 체크된 수는 1, 2, 3, 4, 6, 8 소스코드 package samsung; import java.util.*; public class s_1288 { public static void main(String[] args) { Scanner sc = new Scanner(S.. 2020. 2. 5.
[SWEA] 1284. 수도 요금 경쟁 문제 수도 요금 계산 문제 A사 : 1리터당 P원 B사 : 월간 사용량이 R리터 이하일 때, 기본 요금. R리터보다 많을 때, 초과량에 대해 1리터당 S원. 풀이방법 월간 사용량이 w, B 사의 기본 요금이 q, 초과량이 r, 초과량에 대한 요금이 s일 때, A = P * w B = q (w r) 소스코드 package samsung; import java.util.*; public class s_1284 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int test = sc.nextInt(); for(int t = 1; t 2020. 2. 5.
[SWEA] 1228. 암호문1 문제 0 ~ 999999 사이의 수가 나열된 암호문이 있을 때, 명령에 따라 암호문을 수정하는 문제 명령문> I(삽입) x, y, s : x는 삽입할 인덱스, y는 삽입할 숫자의 수, s는 삽입할 숫자들 풀이방법 데이터의 삽입이 많은 문제로 연결리스트 구조를 사용해 연산의 수를 줄인다 소스코드 import java.util.*; import java.io.FileInputStream; public static class Main { public static void main(String args[]) throws Exception { Scanner sc = new Scanner(System.in); for(int t = 1; t = 0; j--) { l.add(idx, a[j]); } } System.o.. 2020. 2. 5.
[SWEA] 1225. 암호생성기 문제 8자리 숫자가 입력되었을 때, 암호를 구하는 문제 1) 8개의 숫자를 입력 받음 2) 첫 번째 숫자를 1 감소한 뒤, 맨 뒤로, 다음 첫 번째 수는 2 감소한 뒤 맨 뒤로, 그 다음 첫 번째 수는 3을 감소하고 맨뒤로, 그 다음 수는 4, 그 다음 수는 5를 감소.(1 cycle) 3) 숫자가 감소할 때 0보다 작아지는 경우 0으로 유지되며, 프로그램 종료. 이 때, 8자리 수가 암호가 됨 풀이방법 FIFO(First In First Out) 구조를 가지므로, 큐를 이용해 문제를 풀고 분기 조건은 큐의 숫자가 0보다 작거나 같아질 때. 소스코드 package samsung; import java.util.*; public class s_1225 { public static void main(Stri.. 2020. 2. 5.