본문 바로가기

Java42

Scanner input 타입 체크하기! Scanner로 input을 받을 때, 원하지 않는 타입이 들어와 런타임에러가 발생하는 경우가 있습니다. 특히나 int, double, long과 같은 타입의 변수에 String 또는 맞지 않는 타입이 들어오게 되면 에러가 발생하게 됩니다. String type 변수인 경우는 숫자를 입력해도 자동적으로 String으로 변환해서 인식을 하는데 숫자 type은 그럴 수 없기 때문입니다. 이런 사항을 미연에 방지하기 위해서는 타입체크가 필수인데요! 방법은 굉장히 간단합니다 ☺️👏 바로 hasNextInt() method를 사용하면 됩니다. (type에 따라 hasNextDouble(), hasNextLong() 등 맞춰서 사용하면 됩니다.) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16.. 2022. 5. 30.
Tree 구조 코드로 구현해보기 안녕하세요! 이번에는 지난번에 알아본 tree 구조를 어떻게 코드로 나타내는 것인지 알아보겠습니다. 두근두근 생각보다 굉장히 간단합니다. 저는 직접 노드와 노드를 잇는 간선까지 표현을 해서 직접 트리 모양을 그려내는 것인 줄 알았는데, 그건 아니고 각 노드에 연결된 노드 정보를 저장해주는 형식으로 구현이 되더라구요. 무슨 말인지 직접 코드로 보도록 하겠습니다. Tree 구조를 코드로 표현하는 핵심은 Node class를 만들어 주는 것입니다. 데이터를 담고 있는 각 노드를 객체로 만들어 주는 것이죠! Node class는 굉장히 간단합니다. 1 2 3 4 5 6 7 8 9 10 11 12 public class Node { int value; //최대 세개의 child node Node left; Nod.. 2022. 5. 29.
Non-linear(비선형)자료구조(1) - Tree, BinaryTree와 BST 지금까지 배운 배열, 스택, 큐등은 모두 linear(선형) 구조입니다. 선형 구조라고 하면 데이터가 일렬로 늘어서 있는 형태를 의미합니다. [1, 2, 3, 4, 5] 이런식으로요! 이번에 알아볼 tree구조 같은 경우는 non-linear(비선형 구조)에 해당하는 대표적인 데이터 구조입니다. Tree에도 몇가지 종류가 있는데, 가장 기본적인 tree, binary tree(바이너리 트리) 그리고 binary search tree(BST, 바이너리 서치 트리)에 대해 알아보도록 하겠습니다. 데이터 구조의 형태가 마치 나무를 거꾸로 돌려놓은 듯한 모습이라고 하여 트리라고 부릅니다. 트리 구조에서 알고 있어야 할 명칭들이 몇가지 있는데 하나씩 알아보겠습니다. 먼저, 각각의 데이터를(위 그림에서 동그라미 부.. 2022. 5. 28.
Data structure(자료구조)란? - Stack & Queue(스택과 큐) Data structure(DS)는 컴퓨터에서 데이터를 특정한 구조로 정리하여 데이터를 효율적으로 사용하기 위한 방법을 의미합니다. 자료구조의 종류는 다양한데, 지금까지 배워본 array나 collection framework에서 다룬 collection, map 등도 다 자료구조에 해당합니다! 생각해보면 각 자료구조들의 특징과 사용 방법이 조금씩 달랐습니다. 다량의 데이터를 한데 모아둔 것에 그치지 않고 데이터를 어떤 식으로 저장하고 이용할지 차이를 두었기 때문입니다. 이미 좋은 자료 구조들이 만들어져 있으니, 상황에 적절한 자료구조를 선택해서 사용할 수 있도록 하면 되겠습니다. ☺️ 이미 다룬 적이 있는 Array, LinkedList, Set은 제외하고 Stack, Queue, Tree, Graph.. 2022. 5. 27.
Enumeration(열거형 타입, enum) 알아보기 안녕하세요•ɞ•! 이번에는 줄여서 enum이라고 부르는 enumeration에 대해서 알아보려고 합니다. 먼저 enum을 한 줄로 얘기하자면 상수*(constants)의 집합으로 이루어진 특수한 Class데이터 타입입니다. *열거형상수, enmeration constants라고 부르기도 합니다. Enum의 상수들은 객체이며 따로 명시하지 않아도 public static final* 이기 때문에 instance 없이도 접근이 가능하고 변경이 불가능합니다. 또, 다른 class들과 마찬가지로 인스턴스 변수, 메서드, 생성자도 가질 수 있습니다. 그렇지만 다른 class와는 다르게 instance를 만들지 않고 사용하게 됩니다. 생성시에 앞에 enum이라는 keyword를 붙여주면 됩니다. 한 번 직접 생성해.. 2022. 5. 23.
LinkedList 사용하기 LinkedList는 지난번에 알아봤던 ArrayList와 마찬가지로 List interface를 implements하는 Collection framework의 class 중 하나입니다. ArrayList와 다른 점은 list 내부 요소의 추가와 삭제를 효율적으로 할 수 있다는 것입니다. 각각의 요소가 값 뿐만 아니라 link도 같이 가지고 있는데요, 데이터가 중간에 추가 또는 삭제될 때 뒤의 다른 데이터들이 자리를 옮길 필요없이 link의 연결만 수정해주면 되기 때문에 훨씬 효율적입니다. LinkedList의 선언과 초기화는 ArrayList와 유사합니다. 다이아몬드 표시 안에 타입을 넣어주면 됩니다. LinkedList placeToVisit = new LinkedList(); 사용하는 method도.. 2022. 5. 22.
반응형