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

https://www.hackerrank.com/challenges/30-2d-arrays/problem


주어진 2차원 배열내에서 만들수 있는 모래시계모양의 부분집합의 합의 크기를 비교하고


그중 최대값을 구하는 문제이다.



어제의 교훈을 떠올려서 바로 풀지않고 조금 생각을 해보았다.




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

Day 14: Scope  (0) 2018.06.12
Day 13: Abstract Classes  (0) 2018.06.11
Day 12: Inheritance  (0) 2018.06.10
Day 10: Binary Numbers  (0) 2018.06.09
30 Days of Code  (0) 2018.06.09

https://www.hackerrank.com/challenges/30-binary-numbers/problem



10진수를 입력받아서,  2진수로 변환한 뒤에, 연속된 1의 최대개수를 구하는 문제이다.


단순하게 문제 그대로 접근해서


그냥 2진수변환하고, 포문 돌려서 앞뒤비교해가면서 카운트 하면 되겠지 생각하고 풀었다.


다 풀고나서, 다른 사람들은 어떻게 풀었나 해서 보니까 좀 색다른 방법이 있었다.




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

Day 14: Scope  (0) 2018.06.12
Day 13: Abstract Classes  (0) 2018.06.11
Day 12: Inheritance  (0) 2018.06.10
Day 11: 2D Arrays  (0) 2018.06.09
30 Days of Code  (0) 2018.06.09

문제해결 능력과 코딩실력을 키우기 위해서 HackerRank 에서 꾸준히 하고있는 연습중 하나이다.


1일부터 30일까지 차례로 코딩에 필요한 기본기를 쌓아가는 커리큘럼같은데


이미 푼 부분은 제외하고, 앞으로 푸는 문제들을 정리해서 올려볼 생각이다.


지금 떠올렸던 문제접근방법이나 해결방법등을 기록해두고, 나중에 다시 확인해보면


개선점이나 기타 문제점등을 파악하는데 도움이 될 것이다.

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

Day 14: Scope  (0) 2018.06.12
Day 13: Abstract Classes  (0) 2018.06.11
Day 12: Inheritance  (0) 2018.06.10
Day 11: 2D Arrays  (0) 2018.06.09
Day 10: Binary Numbers  (0) 2018.06.09

+ Recent posts