본문 바로가기

Category

[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도 짝수에 포함한다.) 가 붙은 문자들을 번호가 빠른 순으로 다음과 같이 붙이고, 그 다음 홀수 번호가 가 붙은 문자들을 번호가 빠른 순으로 그 뒤.. 더보기
[algorithm] 히스토그램 히스토그램 문제네 줄(한 줄당 72자이내)을 입력으로 받아 각 문자의 빈도수를 구하여 출력하는 문자 히스토그램을 출력하는 프로그램을 작성하라. 입력각 줄은 72자이내의 문자(알파벳 대문자, 특수문자)로 이루어진다. 출력불필요한 빈 줄은 출력하지 않는다. 문자 사이에는 한 칸의 공백이 있다. 예제 입력JAVAPROGRAMMINGJAVAJAVA 예제 출력A의 사용 빈도는 : 7G의 사용 빈도는 : 2I의 사용 빈도는 : 1J의 사용 빈도는 : 3M의 사용 빈도는 : 2N의 사용 빈도는 : 1O의 사용 빈도는 : 1P의 사용 빈도는 : 1R의 사용 빈도는 : 2V의 사용 빈도는 : 3 문제 풀이import java.util.Scanner; public class Main {public static void m.. 더보기
[algorithm] 알파벳 찾기 알파벳 찾기 문제 알파벳 소문자로만 이루어진 단어 S가 주어진다. 각각의 알파벳에 대해서, 단어에 포함되어 있는 경우에는 처음 등장하는 위치를, 포함되어 있지 않은 경우에는 -1을 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 단어 S가 주어진다. 단어의 길이는 100을 넘지 않으며, 알파벳 소문자로만 이루어져 있다. 출력 각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다.만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출력한다. 단어의 첫 번째 글자는 0번째 위치이고, 두 번째 글자는 1번째 위치이다. 예제 입력 java 예제 출력 1 -1 -1 -1 -1 -1 -1 -1 -1 0 -1 -1 -1 -1 .. 더보기
[algorithm] 알파벳 개수 구하기 알파벳 개수 문제알파벳 소문자로만 이루어진 단어 S가 주어진다. 이 때, 각 알파벳이 단어에 몇 개가 포함되어 있는지 구하는 프로그램을 작성하시오. 입력첫째 줄에 단어 S가 주어진다. 단어의 길이는 100을 넘지 않으며, 알파벳 소문자로만 이루어져 있다. 예제 출력단어에 포함되어 있는 a의 개수, b의 개수, …, z의 개수를 공백으로 구분해서 출력한다. 예제 입력java 예제 출력2 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 문제 풀이import java.util.Scanner; public class Main { public static void main(String[] args) {Scanner scanner = new Scanner(System.in).. 더보기
[jQuery] 화면 상단으로 이동시키기 화면 상단으로 이동시키기 function scrollToTop() { $('html, body').animate({scrollTop: 0 }, 'slow');} 더보기