Algorithm 6

패턴 매칭

패턴매칭 문자열에서 특정 단어나 문자열을 찾는 과정을 패턴매칭이라고 부른다. 문자열 패턴 매칭에 사용되는 대표적인 알고리즘은 아래와 같이 4가지가 있다. 고지식한 패턴 검색 알고리즘 카프-라빈 알고리즘 KMP 알고리즘 보이어-무어 알고리즘 고지식한 패턴 검색 알고리즘 고지식한 알고리즘(Brute Force)이란? 본문 문자열을 처음부터 끝까지 차례대로 순회하면서 패턴 내의 문자들을 일일이 비교하는 방식으로 동작하는 알고리즘이다. 고지식한 패턴 검색 알고리즘의 시간 복잡도는 최악의 경우 시간 복잡도는 텍스트의 모든 위치에서 패턴을 비교해야 하므로 O(MN)이 된다. (10000 x 80 = 800000번의 비교가 일어난다. ) KMP 알고리즘 KMP 알고리즘이란? 불일치가 발생한 텍스트 스트링의 앞 부분에..

5번 대문자 소문자

문제 소개 - 대문자는 소문자로, 소문자는 대문자로 변환하시오. - helloWorlD - 정답 HELLOwORld 아스키 코드를 사용하는 문제인거 같다. 아스키 코드란? 컴퓨터는 0과 1 숫자 밖에 모르기 때문에 문자도 숫자로 기억합니다. 이때, 어떤 숫자와 어떤 문자를 대응시키는가에 따라 여러 가지 인코딩 방식이 있는데 통상 아스키 코드 방식을 많이 사용합니다. 아스키 코드(ASCII Table)는 0번부터 127번까지만 사용합니다. 127번 이후 코드를 사용했던 적도 있었는데 이는 표준이 아니며 운영체제마다 다른 코드(문자)를 배치했기 때문에 호환이 되지 않습니다. 윈도우즈 운영체제는 현재 128번부터 255번 사이에 포함된 문자를 출력하려는 시도에 대해 물음표(?)를 출력해서 사용하면 안된다는 것..

Algorithm 2021.10.13

4번 10진수를 2진수로 변환

문제 소개 - 10진수를 2진수로 변환하시오. - 19 - 정답: 10011 input을 scanner로 뽑아주었고 2진수를 저장할 배열을 arr로 만들어 주었다. 배열의 index를 구할 index변수를 0으로 저장해둔 다음 while문이 input이 0보다 클 때까지 돌린다. 그다음 arr[index]에 input%2 input을 2로 나눴을 때 남는 것을 넣어준다. 이것으로 2진수를 나타낸다. 그리고 input에 input/2를 해주고 index++;을 해준다. while문이 끝나고 index--;를 해주는 이유는 배열 한개가 더 생성 되기 때문에 지워주는것이다. for문으로 index를 거꾸로 돌려 arr를 출력해주면 된다. 19를 입력하면 이런식으로 출력이 된다.

Algorithm 2021.10.13

3번 최빈수 구하기

문제 소개 - 가장 많이 출현한 수를 출력하시오. - 1 2 2 3 1 4 2 2 4 3 5 3 2 - 정답: 2 (5회) 출현 수를 배열에 저장해두고 빈 배열을 하나 만들어준다. 반복문을 통해 a배열의 길이만큼 돌려주면서 many배열에 a[i]번째를 넣어준다. 예를 들면 a[0]은 1이고 a[1]은 2 a[2]는 2 이기때문에 many[a[0]]은 many[1]이 되고 many[a[1]]은 many[2]가 된다. many[a[2]]는 many[2]가 되는 것이다. 이부분을 이용해서 ++을 사용해서 그부분만 증가를 시켰다. manyNum 변수와 manyCnt변수를 통해 many배열을 뽑아 내는데 manyCnt가 many[i]보다 작으면 manyCnt를 many[i]에 넣어준다. 이걸 반복하면 가장 큰 횟..

Algorithm 2021.10.13

2번 피보나치 수열

문제 소개 - 피보나치 수열을 출력해라 - An= An-1 + An-2 - 1 1 2 3 5 8 13 21 34 ... 피보나치 수(영어: Fibonacci numbers)는 첫째 및 둘째 항이 1이며 그 뒤의 모든 항은 바로 앞 두 항의 합인 수열이다. 일단 첫째 및 둘째항의 변수명을 prevPrevNum과 prevNum 으로 해주고 1로 저장한뒤 출력을 했다. 그 이후 for문을 사용해서 3번째부터 출력을 하게끔 했는데 num변수에 prevPrevNum과prevNum을 지정해준 뒤 출력을 했다. 반복문이 끝날 때 까지 prevPrevNum은 그다음인 prevNum으로 지정해주고 prevNum은 그다음인 num으로 지정해주면 끝이다.

Algorithm 2021.10.13

1번 학생이름 저장 및 검색

문제 소개 - 학생 정보들을 저장하고, 학생이름으로 검색했을 때 학번을 출력하는 프로그램 작성. - Student 클래스 생성 - String name, no를 가짐 (이름과 학번) - 학생들을 ArrayList에 저장한 이후, - 계속 섬색을 하겠느냐 y -> 반복 - 종료하고 싶으면 n -> 프로그램 반복 -학생 이름이 있는 경우 그 학생의 학번을 출력 -학생 이름이 없으면, 없는 학생이름이라고 출력 위 코드와 같이 Student 클래스를 생성하여 생성자를 생성하고 getter setter메서드를 생성해 주었다. 메인 클래스에선 검색을 받을 수 있게 Scanner를 사용하였고 Student클래스를 import받아서 st1, st2, st3에 저장해 주었다. Student클래스를 받을 때 Student..

Algorithm 2021.10.13