728x90 전체 글71 [Algorithm] BOJ-14503 Java로 문제풀이 (구현) 안녕하세요 Coding-Knowjam입니다. 오늘은 백준 온라인 저지에 있는 문제를 풀어보겠습니다. 문제 링크는 아래에 있으니 먼저 읽고 오시길 바랍니다. https://www.acmicpc.net/problem/14503 1. 문제 해설 문제 난이도 : 골드 5 알고리즘 분류 : 구현 문제 난이도는 골드 5로 어렵지 않은 편이며, 풀이 또한 문제에서 제시한 조건에 따라 구현만 하면 됩니다. 구현할 때 생각을 좀 해야 하는 부분이 로봇청소기가 방향성을 가지고 있다는 점입니다. 이 부분을 제외하고는 BFS에서 상하좌우로 움직이면서 최단거리 세는 것과 비슷했던 것 같습니다. 그러면 코드를 살펴보겠습니다. 2. Java 코드로 구현 우선은 다음과 같이 로봇청소기 클래스를 하나 만들어주겠습니다. // main .. Algorithm & Data Structure/문제풀이 2021. 4. 14. [Algorithm] BOJ-7562 Java로 문제풀이 (BFS) 안녕하세요 Coding-Knowjam입니다. 오늘은 BFS알고리즘을 이용해서 문제를 풀어보겠습니다. 백준 온라인 저지에 있는 문제를 풀어볼 예정이며 문제와 관련한 내용은 링크를 참조하시면 되겠습니다. https://www.acmicpc.net/problem/7562 1. 해결 아이디어 문제 자체는 기본적인 BFS를 구현할 수 있다면 어렵지 않게 풀 수 있습니다. 문제를 풀기 위한 아이디어는 다음과 같습니다. 나이트가 이동하는 좌표를 계산할 수 있도록 move배열 선언 나이트가 방문한 좌표는 다시 방문하지 않음 2. Java 코드로 구현 우선 코드로 구현할 때 아마 개발자마다 성향이 다르겠지만 저는 2차원 배열 안에서 움직이는 좌표를 계산할 때 클래스를 따로 선언해주는 것이 편해서 이번에도 클래스를 하나 .. Algorithm & Data Structure/문제풀이 2021. 4. 13. [Algorithm] BFS(Breadth-first search)를 Java로 구현해보자! 안녕하세요 코딩노잼입니다. 오늘은 BFS(너비 우선 탐색)을 Java로 구현해보겠습니다. 1. BFS (Breadth-first Search) BFS는 너비 우선 탐색이라고 부르기도 하며, 코딩 테스트에서 자주 등장하는 알고리즘 중에 하나입니다. 기본적으로 그래프 탐색에 사용되며, 가까운 노드부터 우선적으로 탐색하는 알고리즘입니다. BFS는 큐(Queue) 자료구조를 사용해서 구현할 수 있습니다. 글로만 보면 이해가 어려우실 테니 그림과 같이 보겠습니다. 위와 같은 그래프가 존재하고 노드의 탐색은 1번부터 시작한다고 가정해보겠습니다. 1. 큐에 1번 노드를 넣고 방문 처리합니다. (여기서 방문처리라는 것은 내가 해당 노드에 방문했음을 기록하는 것입니다.) 2. 1번 노드와 가까운 노드를 큐에 넣고 방문 .. Algorithm & Data Structure/이론 2021. 4. 11. [Algorithm] Trie를 Java로 구현해보자! 안녕하세요 coding-knowjam입니다. 오늘은 검색할 때 O(N)의 시간 복잡도를 가지는 Trie를 구현해보겠습니다. 1. Trie란? Trie는 일반적인 Tree자료구조와 같은 모양이지만 저장하는 값이 다른 형태입니다. 정수형을 저장하는 Tree가 아래와 같은 모양으로 있다고 가정하겠습니다. 위와 같은 정수형 자료의 이진트리에서는 검색을 수행할 때 O(logN)의 시간 복잡도를 가지게 됩니다. 그러나 같은 이진트리 형태 이어도 문자열을 저장하고 있다면 문자열의 길이가 M일 때, O(M*logN)의 시간 복잡도를 가지게 됩니다. 이러한 문제를 해결하기 위해 Trie를 사용하게 됩니다. Trie는 문자열 전체를 하나의 노드에 저장하는 게 아니라, 한 단어씩 노드에 저장하는 트리입니다. Trie는 루트.. Algorithm & Data Structure/이론 2021. 4. 10. [Java] Map Interface의 유용한 메서드를 알아보자! (Java 8 기준) 안녕하세요 coding-knowjam입니다. 오늘은 Map Interface의 메서드 중 Java8에서 등장한 유용한 메서드들을 알아보겠습니다. Java8 하면 빼놓을 수 없는 게 람다식인데 오늘 알아볼 메서드들은 대부분 람다식을 전달 인자로 받습니다. 메서드를 설명드리면서 내부 로직도 같이 살펴볼 텐데 이때 사용한 JDK는 openjdk11입니다. 1. compute() compute() 메서드는 람다식을 통해서 기존의 값에 어떻게 연산을 할지 지정할 수 있습니다. 사용방법은 다음과 같습니다. Map map = new HashMap(); map.compute("coding", (key, oldValue) -> oldValue == null ? 0 : oldValue + 1); System.out.pri.. Java 2021. 4. 7. [Java] Arrays.sort()와 Collections.sort()에 대해서 자세히 알아보자! 안녕하세요 coding-knowjam입니다. 오늘은 정렬할 때 사용하는 대표적인 메서드 Arrays.sort()와 Collections.sort()에 대해 알아보겠습니다. 1. Arrays.sort() 1.1 API 문서 (Java 8) 문서 URL : https://docs.oracle.com/javase/8/docs/api/ API문서를 살펴보면 여러 가지 타입에 따라 사용할 수 있도록 overloading 된 sort() 메서드를 볼 수 있습니다. 그로 인해 우리는 Arrays.sort()에 char, int, boolean 등 과 같은 primitve(기본형) 타입과 reference(참조) 타입의 배열을 인자로 전달해서 사용할 수 있습니다. (배열만 사용 가능) 메서드에 매개변수로 Compara.. Java 2021. 3. 13. [Algorithm] BOJ 2206번 - 벽 부수고 이동하기 (Java) 안녕하세요 coding-knowjam입니다. 오늘은 알고리즘 문제를 풀어보겠습니다. 문제는 백준 온라인 저지에 있는 2206번 문제입니다. 문제에 대한 내용은 아래 링크를 통해서 읽어보시길 바라겠습니다. https://www.acmicpc.net/problem/2206 1. 문제 파악 및 해결 방법 1.1 목적 (1,1) -> (N, M)까지 이동할 때의 최단거리 구하기 1.2 조건 1. 맵에서 0으로 된 곳은 이동 가능 2. 맵에서 1로 된 곳은 벽이 있어서 이동 불가능 3. 이동하면서 벽을 1번은 부술 수 있음 4. 이동 가능한 범위는 상하좌우로 인접한 칸으로만 이동 가능 5. (1,1)과 (N, M)은 항상 0이고, 최단거리에 포함해서 계산하며 이동거리는 칸마다 1 임 6. (N, M) 지점에 도착.. Algorithm & Data Structure/문제풀이 2021. 2. 7. [Java] Comparable / Comparator에 대해서 알아보자! (feat. 백준알고리즘-1181) 안녕하세요 coding-knowjam입니다. 오늘은 Comparable, Comparator 인터페이스에 대해서 알아보겠습니다. 1. Comparable Interface 1.1 API 문서 Java 8 API 문서에서 Comparable Interface는 다음과 같이 설명하고 있습니다. (API 문서 : https://docs.oracle.com/javase/8/docs/api/) This interface imposes a total ordering on the objects of each class that implements it. This ordering is referred to as the class's natural ordering, and the class's compareTo meth.. Java 2021. 1. 14. 이전 1 ··· 5 6 7 8 9 다음 728x90