본문 바로가기

Programming

[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');} 더보기
[jQuery] 스크롤 값에 이벤트 주기 스크롤 값에 이벤트 주기 $(window).scroll(function(){if($(window).scrollTop() > 300){$('.side-scrolltop').fadeIn('1000');}else if($(window).scrollTop() < 300){$('.side-scrolltop').fadeOut('1000');}}); 더보기
[jQuery] 팝업창에서 다른 곳을 클릭했을때 닫기 팝업창에서 다른 곳을 클릭했을때 닫기 $(document).mouseup(function (e) {// 팝업 아이디var container = $("#popup");if (!container.is(e.target) && container.has(e.target).length === 0){container.css("display","none");}}); 더보기
[jQuery] alert 디자인을 바꿔주는 플러그인 alert 디자인을 바꿔주는 플러그인 ALERTIFY.js Alert Plug-In SetupURL : http://fabien-d.github.io/alertify.js/ 아래 폴더에 있는 라이브러리를 프로젝트에 저장lib 폴더 alertify.js, alertify.min.jsthemes 폴더 alertify.bootstrap.css, alertify.core.css, alertify.default.css Usage위에 추가한 경로에 있는 해당 라이브러리 참조Include JSInclude CSS Default Usage (기본 alert 메시지) 1. alertalertify.alert("Message"); 2. confirmalertify.confirm("Message", function (e) .. 더보기
[jQuery] form 객체를 json 형태로 만들기 form 객체를 json 형태로 만들기 HTML serialize()와 serializeArray()의 차이점 $("#form").serialize();name=seong&age=123 $("#form").serializeArray();[{"name":"name","value":"seong"},{"name":"age","value":"123"}] jquery를 확장하여 serializeArray()를 이용해 json obj 형태로 만들기 /* serializeArray()를 받아서 반환하는 함수 */ MappingJacksonJsonView를 이용하여 컨트롤에서 @RequestBody로 매핑할 수 있다. 더보기