https://www.hackerrank.com/challenges/30-generics/problem


인티즈배열과, 스트링배열 양쪽 모두 받아서 출력할수있는 제네릭함수를 작성하는 문제이다.


전에 공부할때 간단히 보고 넘어갔었는데


보통 ArrayList에 있는 <>에 넣는 용도로만 쓰다가 직접 메서드를 작성하려고 보니


제네릭클래스를 만들어야 되서 다시 한번 책을 찾아봤다.



메서드를 작성할때, 메서드 안에 배열을 제네릭 타입으로 지정해놓아야 하는데


그러려면 클래스를 제네릭 클래스로 만들어야 했다.



'IT > Algorithm' 카테고리의 다른 글

[LeetCode] 773. Sliding Puzzle  (0) 2022.06.25
Day 22: Binary Search Trees  (0) 2018.06.25
Day 20: Sorting  (0) 2018.06.19
Day 19: Interfaces  (0) 2018.06.19
Day 18: Queues and Stacks  (0) 2018.06.19

https://www.hackerrank.com/challenges/30-sorting/problem


BubbleSort를 구현하고, 주어진 배열을 정렬하는데 걸리는 횟수를 카운트해서 출력하는 문제이다.



'IT > Algorithm' 카테고리의 다른 글

Day 22: Binary Search Trees  (0) 2018.06.25
Day 21: Generics  (0) 2018.06.25
Day 19: Interfaces  (0) 2018.06.19
Day 18: Queues and Stacks  (0) 2018.06.19
Day 17: More Exceptions  (0) 2018.06.16

https://www.hackerrank.com/challenges/30-interfaces/problem


인터페이스를 구현하고, 약수들의 합을 구하는 문제이다.


상속과 추상클래스 문제가 나올때 같이 나왔던것 같은데, 다시 확인해보니 그때 안나왔었다.


중간에 있던 코드중 getClass().getInterfaces();라는 내용이 있었는데


getClass는 컬렉션에 넣었을때 확인할때 쓸 수 있을 것 같은데


getInterfaces는 어디다 쓰는걸까??



약수는, for 문을 1부터 시작해서, 나머지가 0이 아닌것들을 제외하여서 구하였다.


약수를 구하는 알고리즘을 검색하면, 몇가지 더 효율적인 방법이 나오는데


생각보다 알고리즘 대회등에서 많이 나오는 문제인듯 하다.


기본적이면서, 생각의 깊이에 따라 더 효율적이고 성능을 향상 시킬 수 있어서 그런가?


최대공약수를 구하는 알고리즘중에 유클리드 호제법이라는게 있는데 원리가 잘 이해가 안되서


공부좀 더 해야겠다.


https://ko.wikipedia.org/wiki/%EC%9C%A0%ED%81%B4%EB%A6%AC%EB%93%9C_%ED%98%B8%EC%A0%9C%EB%B2%95



'IT > Algorithm' 카테고리의 다른 글

Day 21: Generics  (0) 2018.06.25
Day 20: Sorting  (0) 2018.06.19
Day 18: Queues and Stacks  (0) 2018.06.19
Day 17: More Exceptions  (0) 2018.06.16
Day 16: Exceptions - String to Integer  (0) 2018.06.14

https://www.hackerrank.com/challenges/30-queues-stacks/problem


스택과 큐를 이용해서 앞뒤가 똑같은 문자열을 확인하는 문제이다.


하루에 한문제씩 풀 예정이였는데, 한번 더 복습하려고 생각했던 자료구조 문제가 나와서


복습진도를 맞추느라 좀 늦어지게 되었다.



문제 자체는 자바에 구현되있는 스택과, 큐를 구현한 컬렉션을 사용해서 간단하게 풀 수 있지만


실제로 스택과 큐가 어떤 코드로 동작하는지 추가적인 공부를 하였다.


지금의 이해도와, 나중에 더 학습하고 나서의 이해도를 비교하기 위해 내용정리를 해봐야 겠다.



Stack은 jvm에 있는 콜스택등을 구현할때 쓰는, 선입후출방식의, 카드더미같은 자료구조이다.


사용할 만한 곳은 콜스택도 있고 할일 뭉터기 카드나, 인터넷 브라우져에서 뒤로, 앞으로등도 스택으로 구현할 수 있다.


그리고 재귀함수등도 스택으로 처리할테고, 어떤 길을 지나간뒤, 다시 돌아오는 등의 형태에서도 사용할 수 있을듯 하다.



는 파이프, 혹은 대기줄같은 선입선출방식의 자료구조이다.


순서대로 처리해야 하는 일들, 음식주문이나 고객센터 문의사항 처리, 대기표 발급이나 게임이나 프로그램의 예약명령어등이 있겠다.



내가 공부했던 자바책에선, 스택과 큐 둘다 linkedlist로 구현했다고 한다.


linkedlist는 순서가 없고, 각 노드가 이전이나 다음노드를 가지고 있는 연결된 줄같은 자료구조인데


뒤로만 연결되있는 형태가 기본형 LinkedList이고


앞의 노드도 가지고 있어서 앞뒤로 이동할 수 있는 형태가 doubleLinkedList이며


제일 처음과 끝을 연결한 형태는 CircularLinkedList라고 한다.



자바는 그중 doubleLinkedList로 LinkedList를 구현하였고, 처음과 끝을 모두 바로 접근할 수 있어서 Stack과 Queue 양쪽에 적합하다고 한다.



'IT > Algorithm' 카테고리의 다른 글

Day 20: Sorting  (0) 2018.06.19
Day 19: Interfaces  (0) 2018.06.19
Day 17: More Exceptions  (0) 2018.06.16
Day 16: Exceptions - String to Integer  (0) 2018.06.14
Day 15: Linked List  (0) 2018.06.13

https://www.hackerrank.com/challenges/30-more-exceptions/problem


Day 16과 같은 예외처리 문제이다.


다만 차이점은, 강제로 예외를 발생시켜서, 함수를 호출한 쪽에서 처리하도록 보내는 문제이다.


배웠던 기억이 있는데, 안쓰다보니 떠오르지 않아서, 다시 찾아보고나서 풀었다.

'IT > Algorithm' 카테고리의 다른 글

Day 19: Interfaces  (0) 2018.06.19
Day 18: Queues and Stacks  (0) 2018.06.19
Day 16: Exceptions - String to Integer  (0) 2018.06.14
Day 15: Linked List  (0) 2018.06.13
Day 14: Scope  (0) 2018.06.12

https://www.hackerrank.com/challenges/30-exceptions-string-to-integer/problem


스트링값을 입력받아서, int로 변환시키고 출력할때 예외처리를 하는 문제이다.


try-catch문만 입력하면 된다.

'IT > Algorithm' 카테고리의 다른 글

Day 18: Queues and Stacks  (0) 2018.06.19
Day 17: More Exceptions  (0) 2018.06.16
Day 15: Linked List  (0) 2018.06.13
Day 14: Scope  (0) 2018.06.12
Day 13: Abstract Classes  (0) 2018.06.11

https://www.hackerrank.com/challenges/30-linked-list/forum


연결리스트 자료구조를 구현하는 문제이다.


기본 Node클래스는 주어져있고, 삽입시 사용할 메서드만 완성하면 된다.



'IT > Algorithm' 카테고리의 다른 글

Day 17: More Exceptions  (0) 2018.06.16
Day 16: Exceptions - String to Integer  (0) 2018.06.14
Day 14: Scope  (0) 2018.06.12
Day 13: Abstract Classes  (0) 2018.06.11
Day 12: Inheritance  (0) 2018.06.10

https://www.hackerrank.com/challenges/30-scope/problem


클래스의 생성자를 작성하고, 최대최소값을 비교한뒤, 그 값을 인스턴스변수에 반환하는 메서드를 작성하는 문제이다.


이 문제도 정답률이 99.6%였다.



'IT > Algorithm' 카테고리의 다른 글

Day 16: Exceptions - String to Integer  (0) 2018.06.14
Day 15: Linked List  (0) 2018.06.13
Day 13: Abstract Classes  (0) 2018.06.11
Day 12: Inheritance  (0) 2018.06.10
Day 11: 2D Arrays  (0) 2018.06.09

https://www.hackerrank.com/challenges/30-abstract-classes/problem


주어진 조건에 맞게 추상클래스를 완성시키는 문제이다.



Day 12문제와 완전히 같은 형태여서 그런지 모르겠지만


Day 1~13까지 정답률중에서 가장 높은 정답률(99.65%)이다 



오히려 Day 1,2 문제들이 85%로 더 정답률이 낮다.

'IT > Algorithm' 카테고리의 다른 글

Day 15: Linked List  (0) 2018.06.13
Day 14: Scope  (0) 2018.06.12
Day 12: Inheritance  (0) 2018.06.10
Day 11: 2D Arrays  (0) 2018.06.09
Day 10: Binary Numbers  (0) 2018.06.09

https://www.hackerrank.com/challenges/30-inheritance/problem


조상클래스를 상속받은 뒤에 조상클래스의 생성자를 이용하고 추가로 자손클래스의 변수도 입력받아서


자손클래스의 생성자를 작성한 뒤에, 클래스의 변수들을 이용하는 매서드를 작성하는 문제이다.



'IT > Algorithm' 카테고리의 다른 글

Day 14: Scope  (0) 2018.06.12
Day 13: Abstract Classes  (0) 2018.06.11
Day 11: 2D Arrays  (0) 2018.06.09
Day 10: Binary Numbers  (0) 2018.06.09
30 Days of Code  (0) 2018.06.09

+ Recent posts