1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | import java.util.*; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); int N1 = sc.nextInt(); int N2 = sc.nextInt(); int N3 = sc.nextInt(); int Size = N1 * N2 * N3; int[] answerArray = new int[Size]; int answerIdx = 0; for(int i=1; i<=N1; i++){ for(int j=1; j<=N2; j++){ for(int k=1; k<=N3; k++){ answerArray[answerIdx++] = i + j + k; } } } Arrays.sort(answerArray); int currentNum = answerArray[0]; int maxNum = answerArray[0]; int currentCnt = 1; int maxCnt = 1; for(int i=1; i<answerArray.length; i++){ if(currentNum != answerArray[i]){ if(maxCnt < currentCnt){ maxNum = currentNum; maxCnt = currentCnt; } currentNum = answerArray[i]; currentCnt = 1; }else{ currentCnt++; } } System.out.println(maxNum); } } |
Labels
Sunday, October 18, 2015
주사위
수학귀신
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | import java.util.*; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); int K = sc.nextInt(); long[] zeroCntArray = new long[K+1]; long[] oneCntArray = new long[K+1]; int i = 0; zeroCntArray[i] = 0; oneCntArray[i++] = 0; zeroCntArray[i] = 0; oneCntArray[i++] = 1; if(K >= 2){ zeroCntArray[i] = 1; oneCntArray[i++] = 1; for(; i<K+1; i++){ zeroCntArray[i] = zeroCntArray[i-1] + zeroCntArray[i-2]; oneCntArray[i] = oneCntArray[i-1] + oneCntArray[i-2]; } } System.out.println(zeroCntArray[K]+" "+oneCntArray[K]); } } |
창고다각형
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | import java.util.*; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); int N = sc.nextInt(); int[][] inputArray = new int[N][2]; for(int i=0; i<N; i++){ inputArray[i][0] = sc.nextInt(); inputArray[i][1] = sc.nextInt(); } sort(inputArray); int maxHeightIndex = 0; int maxHeight = inputArray[0][1]; for(int i=0; i<N; i++){ if(inputArray[i][1] > maxHeight){ maxHeightIndex = i; maxHeight = inputArray[i][1]; } } System.out.println(maxHeightIndex+" "+maxHeight); int currentHeight = inputArray[0][1]; for(int i=0;i<maxHeightIndex;i++){ } } static void sort(int[][] inputArray){ for(int i=0; i<inputArray.length - 1; i++){ for(int j=i; j<inputArray.length - 1; j++){ if(inputArray[j][0] > inputArray[j+1][0]){ int tempLocation = inputArray[j][1]; inputArray[j][1] = inputArray[j+1][1]; inputArray[j+1][1] = tempLocation; int tempHieght = inputArray[j][0]; inputArray[j][0] = inputArray[j+1][0]; inputArray[j+1][0] = tempHieght; } } } } } |
Saturday, October 17, 2015
주차요금
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | import java.util.*; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); int M = sc.nextInt(); int[] mList = new int[M]; for(int i=0; i<M; i++){ mList[i] = sc.nextInt(); } int total = 0; for(int i=0; i<M; i++){ int subTotal = 0; if(mList[i] < 10){ subTotal = 0; }else if(mList[i] >= 10 && mList[i] <= 30){ subTotal = 500; }else{ subTotal = 500 + (((mList[i] - 31)/10) + 1) * 300; } if(subTotal > 50000){ subTotal = 50000; } total += subTotal; } System.out.println(total); } } |
잃어버린 페이지
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | import java.util.*; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); int N = sc.nextInt(); int P = sc.nextInt(); int pageArrayRow = N/4; int[][] pageArray = new int[pageArrayRow][4]; int number = 1; for(int i=0; i<pageArrayRow; i++){ pageArray[i][0] = number++; pageArray[i][1] = number++; } for(int i=N/4-1; i>=0; i--){ pageArray[i][2] = number++; pageArray[i][3] = number++; } int index = 0; if(P > N/2){ if(P%2 == 0){ index = Math.abs((P-N/2)/2 - (N/4)); }else{ index = Math.abs((P-N/2)/2 - (N/4-1)); } }else{ index = (P-1)/2; } int[] answer = new int[3]; int answerIndex = 0; for(int i=0; i<4; i++){ if(pageArray[index][i] != P){ answer[answerIndex++]= pageArray[index][i]; } } System.out.println(answer[0]+" "+answer[1]+" "+answer[2]); } } |
폭탄돌리기
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | import java.util.*; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); int K = sc.nextInt(); int N = sc.nextInt(); int[] timeArray = new int[N]; char[] answerArray = new char[N]; for(int i=0 ; i<N ; i++){ timeArray[i] = sc.nextInt(); String s = sc.next(); answerArray[i] = s.charAt(0); } int timeAnswerIdx = 0; int timer = 0; int i = K; for(;;){ if(timeAnswerIdx > N-1){ break; } int currentTime = timeArray[timeAnswerIdx]; char currentAnswer = answerArray[timeAnswerIdx]; timeAnswerIdx++; timer += currentTime; if(timer > 210){ break; } if(currentAnswer =='T'){ i++; } if(i == 9){ i = 1; } } System.out.println(i); } } |
할부
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | import java.util.*; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); int N = sc.nextInt(); int B = sc.nextInt(); int Quotient = B / (N-1); int min = 0; int max = 0; if(B % (N-1) == 0){ min = Quotient-1+B; max = Quotient+B; }else{ min = Quotient+B; max = Quotient+B; } System.out.println(min+" "+max); } } |
Friday, October 2, 2015
문자열압축
문제
문자열을 입력 받은 후, 같은 문자가 연속적으로 반복되는 경우 반복 횟수를 ()안에 넣어 문자열의 길이를 줄이는 압축하는 프로그램을 작성하려고 한다.
조건1. 같은 문자가 M번 이상 연속으로 반복된 때만 ()안에 반복 횟수를 넣는다.
조건2. 연속으로 반복되는 문자 뒤에 ()를 넣는다.
입력형식
입력의 첫줄에 M(2≤M≤10)이 들어온다.
그 다음 줄에 알파벳 대문자와 숫자로 구성된 문자열이 입력된다. 문자열의 길이는 100이하이다.
출력형식
압축한 문자열을 출력한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | import java.util.*; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); int M = sc.nextInt(); String str = sc.next(); char[] strArray = str.toCharArray(); int strArrayLength = strArray.length; char currentChar = strArray[0]; String currentTempStr = String.valueOf(strArray[0]); for(int i=1; i<strArrayLength; i++){ if(currentChar == strArray[i]){ currentTempStr = currentTempStr + String.valueOf(strArray[i]); }else{ if(currentTempStr.length() < M){ System.out.print(currentTempStr); currentChar = strArray[i]; currentTempStr = String.valueOf(strArray[i]); }else{ System.out.print(currentChar+"("+currentTempStr.length()+")"); currentChar = strArray[i]; currentTempStr = String.valueOf(strArray[i]); } } } if(currentTempStr.length() < M){ System.out.print(currentTempStr); }else{ System.out.print(currentChar+"("+currentTempStr.length()+")"); } } } |
해킹
문제
해커 선빈이는 서버의 로그를 뒤져본 결과 관리자의 암호를 찾을 수 있는 N개의 단서를 발견했다. 선빈이는 서버의 특성상 단서의 길이는 모두 홀수이고, 암호가 로그에 남으면, 그 암호를 뒤집은 암호도 로그에 있다는 것을 알고 있다. 로그에 남은 단서가 주어질 때, 관리자의 암호를 구하는 프로그램을 작성하여라.
입력형식
첫 번째 줄에는 로그에 남은 단서의 수 N(1≤N≤100)이 주어진다. 두 번째 줄부터 N개의 줄에는 각 단서를 나타내는 문자열이 주어진다. 단서는 영어 소문자로만 이루어져 있으며, 길이는 3 이상 13 이하의 홀수이다.
출력형식
관리자의 암호의 길이와 중간 글자를 출력한다. 답은 유일하다고 가정해도 좋다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | import java.util.*; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); int N = sc.nextInt(); String[] strArray = new String[N]; for(int i=0 ; i<N ; i++){ strArray[i] = sc.next(); } String[] strReverseArray = new String[N]; for(int i=0 ; i<N ; i++){ strReverseArray[i] = new StringBuilder(strArray[i]).reverse().toString(); } int pWLength = 0; char midCharacter = '0'; for(int i=0 ; i<N ; i++){ for(int j=0; j<N; j++){ if(strArray[i].equals(strReverseArray[j])){ pWLength = strArray[i].length(); int midIdx = pWLength / 2; midCharacter = strArray[i].charAt(midIdx); } } } System.out.println(pWLength+" "+midCharacter); } } |
Friday, September 25, 2015
정보 올림피아드 2628, 정수 3개 계산기
문제
민성이는 정수3개의 사칙연산을 계산하는 계산기를 만들려고 한다.
계산기는 반드시 3개의 정수만을 계산한다. 사용되는 연산자는 “+, -, *, /, %”를 사용한다. 여기서 ‘/’는 몫을 구하고, ‘%’는 나머지를 구하는 연산자 이다.
입력형식
입력은 첫줄에 계산하고자 하는 연산식이 들어온다. 예, 3+4*5 입력되는 정수는 1000이하이다.
출력형식
출력은 첫줄에 입력으로 주어진 계산식을 계산하여 결과를 정수로 출력한다.
입력 예
3+4*5
출력 예
23
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 | import java.util.*; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); String str = sc.nextLine(); char[] strArray = str.toCharArray(); Queue[] queueArray = new Queue[3]; for(int i = 0;i<3;i++){ queueArray[i] = new LinkedList(); } int stackArrayIdx = 0; char[] operatorArray = new char[2]; int operatorArrayIdx = 0; boolean newOperandFlag = false; for(int i = 0; i < strArray.length;i++){ if(strArray[i]=='+'||strArray[i]=='-'||strArray[i]=='*'||strArray[i]=='/'||strArray[i]=='%'){ operatorArray[operatorArrayIdx] = strArray[i]; operatorArrayIdx++; stackArrayIdx++; }else{ queueArray[stackArrayIdx].add(strArray[i]); } } int[] operandArray = new int[3]; for(int i = 0;i < 3;i++){ String tempOperand = ""; for(;;){ if(queueArray[i].isEmpty()){ break; } char c = (char)queueArray[i].poll(); tempOperand += c; } operandArray[i] = Integer.parseInt(tempOperand); } int[] operatorPrecedence = new int[2]; for(int i=0; i<2; i++){ if(operatorArray[i] == '+'||operatorArray[i] == '-'){ operatorPrecedence[i] = 1; }else{ operatorPrecedence[i] = 2; } } int finalResult = 0; if(operatorPrecedence[0] < operatorPrecedence[1]){ int result1 = calculator(operandArray[1], operatorArray[1], operandArray[2]); finalResult = calculator(operandArray[0], operatorArray[0], result1); }else{ int result1 = calculator(operandArray[0], operatorArray[0], operandArray[1]); finalResult = calculator(result1, operatorArray[1], operandArray[2]); } System.out.println(finalResult); } static int calculator(int operator1, char operand, int operator2){ if(operand == '+'){ return operator1 + operator2; }else if(operand == '-'){ return operator1 - operator2; }else if(operand == '*'){ return operator1 * operator2; }else if(operand == '/'){ return operator1 / operator2; }else if(operand == '%'){ return operator1 % operator2; } return 0; } } |
Sunday, September 20, 2015
C# Thread
using System; using System.Threading; public class Worker { // This method will be called when the thread is started. public void DoWork() { while (!_shouldStop) { Console.WriteLine("worker thread: working..."); } Console.WriteLine("worker thread: terminating gracefully."); } public void RequestStop() { _shouldStop = true; } // Volatile is used as hint to the compiler that this data // member will be accessed by multiple threads. private volatile bool _shouldStop; } public class WorkerThreadExample { static void Main() { // Create the thread object. This does not start the thread. Worker workerObject = new Worker(); Thread workerThread = new Thread(workerObject.DoWork); // Start the worker thread. workerThread.Start(); Console.WriteLine("main thread: Starting worker thread..."); // Loop until worker thread activates. while (!workerThread.IsAlive); // Put the main thread to sleep for 1 millisecond to // allow the worker thread to do some work: Thread.Sleep(1); // Request that the worker thread stop itself: workerObject.RequestStop(); // Use the Join method to block the current thread // until the object's thread terminates. workerThread.Join(); Console.WriteLine("main thread: Worker thread has terminated."); } }
Tuesday, September 15, 2015
Maze
문제 번호 G: [100점] 문제06
시간 제한: 1 Sec 메모리 제한: 128 MB제출: 764 해결 문제 수: 98
[제출][채점 상황 열람]
문제 설명
입력예2
|
8 10
1 1 7 9
00000101
11001000
10000010
01101010
00000110
01010000
01110110
10000100
10011101
01000001
|
출력예2
|
16
|
입력예3
|
5 5
1 1 5 5
00000
01101
00100
01110
00000
|
출력예3
|
8
|
입력
출력
입력 예시
8 7
1 2 7 5
11111111
00000111
10110011
10111001
10111101
10000001
11111111
출력 예시
9
도움말
Anything about the Problems, Please Contact Admin:admin
(c)2015 Edunix Corporation, A Family Company of Willtek Group
GPL2.0 2003-2015 HUSTOJ Project TEAM