본문 바로가기

[algorithm] 2007년 2007년 문제오늘은 2007년 1월 1일 월요일이다. 그렇다면 2007년 x월 y일은 무슨 요일일까? 이를 알아내는 프로그램을 작성하시오. 입력첫째 줄에 빈 칸을 사이에 두고 x(1≤x≤12)와 y(1≤y≤31)이 주어진다. 참고로 2007년에는 1, 3, 5, 7, 8, 10, 12월은 31일까지, 4, 6, 9, 11월은 30일까지, 2월은 28일까지 있다. 출력첫째 줄에 x월 y일이 무슨 요일인지에 따라 SUN, MON, TUE, WED, THU, FRI, SAT중 하나를 출력한다. 예제 입력1 1 예제 출력MON 문제 풀이import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader; public .. 더보기
[algorithm] 문자열 조합 문자열 조합 문제문자열이 하나 주어졌을때, 문자열의 각 문자들을 조합하여 만들 수 있는 모든 경우를 출력하는 프로그램을 작성하라.대문자 알파벳으로 이루어진 길이가 N인 문자열 (1≤N≤100) 입력 예제ABC 가능한 모든 문자열 출력 (알파벳순으로 출력, 각 문자열은 공백으로 구분) 출력 예제ABC ACB BAC BCA CAB CBA 문제 풀이package algorithm; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main{ private static String[] charData; private static char[] words; public stat.. 더보기
[algorithm] 배열 요소 중 누락된 부분 찾기 배열 요소 중 누락된 부분 찾기 문제임의의 크기의 배열 A[N-1]가 있다. 배열의 길이 N은 입력으로 받는다. 길이 N을 입력한 후 배열 A[N-1]의 배열 요소를 임의의 정수로 입력한다. A[N-1] 배열에 1 부터 N까지의 정수가 모두 들어가 있어야 한다고 가정한다면 입력된 배열에서 가정에 어긋난 값을 출력하라 1. 배열의 길이 N 2. 배열요소 N개의 값 입력 샘플5 1,2,1,3,2 출력 샘플(1부터 N 중에서 누락된 요소)4,5 문제 풀이package algorithm; import java.io.*; public class Main { private static final BufferedReader br = new BufferedReader(new InputStreamReader(System.. 더보기
[algorithm] 팰린드롬 만들기 팰린드롬 만들기 문제앞에서부터 읽었을 때와 뒤로부터 읽었을 때 똑같은 문자열을 팰린드롬(palindrome)이라고 합니다. 예를 들면 “noon”이나 “stats” 같은 단어들이 팰린드롬입니다. 주어진 문자열 S 뒤에 적절히 문자열을 붙여서 S 를 팰린드롬으로 만들려고 합니다. 예를 들어 S = “anon”이면 뒤에 “ona”를 붙여서 “anonona”를 만들 수도 있고, “a”를 붙여서 “anona”를 만들 수도 있지요. 물론 S를 뒤집은 문자열을 S 뒤에 붙이면 항상 팰린드롬이 되므로, 결과 팰린드롬이 가능한 한 짧았으면 합니다. S가 주어질 때 S에서 만들 수 있는 가장 짧은 팰린드롬의 길이를 출력하는 프로그램을 작성하세요. 입력입력의 첫 줄에는 테스트 케이스의 수 C(= 0; i--) { char.. 더보기
[algorithm] 크로아티아 알파벳 크로아티아 알파벳 문제예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 다음과 같이 변경해서 입력했다. 크로아티아 알파벳변경 č c= ć c- dž dz= ñ d- lj lj nj nj š s= ž z=예를 들어, ljes=njak은 크로아티아 알파벳 6개(lj, e, š, nj, a, k)로 이루어져 있다.단어가 주어졌을 때, 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다. 입력첫째 줄에 최대 100글자의 단어가 주어진다. 알파벳 소문자와 '-', '='로만 이루어져 있다.문제 설명에 나와있는 크로아티아 알파벳만 주어진다. 출력입력으로 주어진 단어가 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다. 예제 입력ljes=njak 예제 출.. 더보기
[algorithm] 반복되지 않는 첫 번째 문자 찾기 반복되지 않는 첫 번째 문자 찾기 문제문자열에서 처음으로 반복되지 않는 문자를 찾아내는 함수를 작성하라. 예를들어, "total"에서 처음으로 등장하는 반복되지 않는 문자는 'o'이며, "teeter"에서 처음으로등장하는 반복되지 않는 문자는 'r'이다. 입력첫째 줄에 문자열이 주어지고, 둘째 줄에 반복되지 않는 문자가 출력된다 출력첫째 줄에는 반복되지 않는 첫 번째 문자열이 출력된다. 예제 입력 total 예제 출력o 문제 풀이package algorithm; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.HashMap; public class Main .. 더보기
[algorithm] KMP는 왜 KMP일까? KMP는 왜 KMP일까? 문제KMP 알고리즘이 KMP인 이유는 이를 만든 사람의 성이 Knuth, Morris, Prett이기 때문이다. 이렇게 알고리즘에는 발견한 사람의 성을 따서 이름을 붙이는 경우가 많다. 또 다른 예로, 유명한 비대칭 암호화 알고리즘 RSA는 이를 만든 사람의 이름이 Rivest, Shamir, Adleman이다. 사람들은 이렇게 사람 성이 들어간 알고리즘을 두 가지 형태로 부른다. 첫 번째는 성을 모두 쓰고, 이를 하이픈(-)으로 이어 붙인 것이다. 예를 들면, Knuth-Morris-Pratt이다. 이것을 긴 형태라고 부른다.두 번째로 짧은 형태는 만든 사람의 성의 첫글자만 따서 부르는 것이다. 예를 들면, KMP이다.동혁이는 매일매일 자신이 한 일을 모두 메모장에 적어놓는다... 더보기
[algorithm] 상수 상수 문제상근이의 동생 상수는 수학을 정말 못한다. 상수는 숫자를 읽는데 문제가 있다. 이렇게 수학을 못하는 상수를 위해서 상근이는 수의 크기를 비교하는 문제를 내주었다. 상근이는 세 자리 숫자 두 개를 칠판에 써주었다. 그 다음에 크기가 큰 수를 말해보라고 했다. 상수는 수를 다른사람과 다르게 거꾸로 읽는다. 예를 들어, 734과 893을 칠판에 적었다면, 상수는 이 수를 437과 398로 읽는다. 따라서, 상수는 두 수중 큰 수인 437을 큰 수라고 말할 것이다. 두 수가 주어졌을 때, 상수의 대답을 출력하는 프로그램을 작성하시오. 입력첫째 줄에 상근이가 칠판에 적은 두 수 A와 B가 주어진다. 두 수는 같지 않으며, 0이 포함되어 있지 않다. 출력첫째 줄에 상수의 대답을 출력한다. 예제 입력734 .. 더보기
[algorithm] KMP는 왜 KMP일까? KMP는 왜 KMP일까? 문제KMP 알고리즘이 KMP인 이유는 이를 만든 사람의 성이 Knuth, Morris, Prett이기 때문이다. 이렇게 알고리즘에는 발견한 사람의 성을 따서 이름을 붙이는 경우가 많다. 또 다른 예로, 유명한 비대칭 암호화 알고리즘 RSA는 이를 만든 사람의 이름이 Rivest, Shamir, Adleman이다. 사람들은 이렇게 사람 성이 들어간 알고리즘을 두 가지 형태로 부른다. 첫 번째는 성을 모두 쓰고, 이를 하이픈(-)으로 이어 붙인 것이다. 예를 들면, Knuth-Morris-Pratt이다. 이것을 긴 형태라고 부른다.두 번째로 짧은 형태는 만든 사람의 성의 첫글자만 따서 부르는 것이다. 예를 들면, KMP이다.동혁이는 매일매일 자신이 한 일을 모두 메모장에 적어놓는다... 더보기
[algorithm] 문자열 암호화 4. 문자열 암호화 문제특정 메시지를 암호화 하는 방법은 오랫 동안 다양하게 연구되었다.그러한 방법들 중에서 가장 간단한 방법을 생각해보자.특정 문자열을 입력받는다. 편의상 문자열에 공백은 없으며, 영문 대소문자가 입력으로 들어온다. 그러한 다음 문자열의 각 문자에 맨 왼쪽부터 하나씩 0, 1, 2, 3, ... 과 같이 번호를 매긴다.만약 암호화 하려고 하는 문자열이 `HelloWorld' 가 들어왔을 경우, 다음과 같이 번호가 붙게 된다.0 1 2 3 4 5 6 7 8 9 H e l l o W o r l d 그 다음 짝수 번호(2로 나눠 떨어지는 숫자, 0도 짝수에 포함한다.) 가 붙은 문자들을 번호가 빠른 순으로 다음과 같이 붙이고, 그 다음 홀수 번호가 가 붙은 문자들을 번호가 빠른 순으로 그 뒤.. 더보기