분류 전체보기 188

[Algorithm] 모험가 길드

문제 한 마을에 모험가가 N명 있다. 모험가 길드에서는 N명의 모험가를 대상으로 공포도를 측정했다. 공포도가 높은 모험가는 쉽게 공포를 느껴 위험 상황에서 제대로 대처할 능력이 떨어진다. 공포도가 X인 모험가는 반드시 X명 이상으로 구성된 모험가 그룹에 참여해야 여행을 떠날 수 있다. 최대 몇 개의 모험가 그룹을 만들 수 있는지 궁금하다. 입력 조건 첫째 줄에 모험가의 수 N 둘째 줄에 모험가의 공포도 값이 주어진다. 출력 조건 여행을 떠날 수 있는 그룹의 최대값 풀이 N명의 모험가의 공포도를 정렬하고, 그룹 지어진 인원을 빼며 계산한다. import java.util.*; class Main { public static void main(String[] args) { Scanner sc = new Sc..

Algorithm 2021.05.30

[Algorithm] 커리큘럼

문제 동빈이는 온라인으로 컴퓨터 공학 강의를 듣고 있다. 이때 각 온라인 강의는 선수 강의가 있을 수 있는데, 선수 강의가 있는 강의는 선수 강의를 먼저 들어야만 해당 강의를 들을 수 있다. 예를 들어 '알고리즘' 강의의 선수 강의로 '자료구조'와 '컴퓨터 기초'가 존재한다면, '자료구조'와 '컴퓨터 기초'를 모두 들은 이후에 '알고리즘' 강의를 들을 수 있다. 동빈이는 총 N개의 강의를 듣고자 한다. 모든 강의는 1번부터 N번까지의 번호를 가진다. 또한 동시에 여러 개의 강의를 들을 수 있다고 가정한다. 예를 들어 N=3일 때, 3번 강의의 선수 강의로 1번과 2번 강의가 있고, 1번과 2번의 선수 강의는 없다고 가정하자. 그리고 각 강의에 대하여 강의 시간이 다음과 같다고 가정하자. 1번 강의 : 3..

Algorithm 2021.05.29

[Java] Windows에서 Gradle 프로젝트 생성하기

Gradle 설치 Gradle 홈페이지에서 원하는 버전을 다운받는다. Gradle | Releases Find binaries and reference documentation for current and past versions of Gradle. gradle.org binary-only를 받아 원하는 디렉터리에 압축해제해 다운로드 받았다. Gradle을 설치할 디렉터리에 압축해제한다. {Gradle 설치 경로}\gradle-{version}\bin 을 환경변수에 추가한다. 환경변수 편집은 [고급 시스템 설정]-[환경변수] 이후 명령 프롬프트 (CMD) 에서 gradle -v 을 통해 설치를 확인한다. Gradle 프로젝트 생성 프로젝트를 생성할 디렉터리를 만들고, gradle init 를 사용한다. ..

Anything 2021.05.29

[Java] 열거형 enums

열거형이란? 열거형은 서로 관련된 상수를 편리하게 선언하기 위한 것, 여러 상수를 정의할 때 사용하면 유용하다. 열거형 정의 열거형 Direction의 선언에서 상수 하나하나는 각각 Direction 객체다. // enum 열거형이름 { 상수명1, 상수명2, ... } enum Direction { EAST, SOUTH, WEST, NORTH } 열거형 사용 열거형은 '열거형이름.상수명'으로 사용가능하다. // '열거형이름.상수명' class Unit { int x, y; Direction dir; void init() { this.dir = Direction.EAST; } } 열거형 상수간의 비교에는 '==' 비교 연산자를 사용할 수 있다. '' 와 같은 비교연산자는 사용할 수 없고 compareTo(..

Java 2021.05.28

[Algorithm] 도시 분할 계획

문제 동물원에서 막 탈출한 원숭이 한 마리가 세상 구경을 하고 있다. 어느 날 원숭이는 '평화로운 마을'에 잠시 머물렀는데 마침 마을 사람들은 머리를 맞대고 회의 중이었다. 마을은 N개의 집과 그 집을 연결하는 M개의 길로 이루어져 있다. 길은 어느 방향으로든지 다닐 수 있는 편리한 길이다. 그리고 길마다 길을 유지하는데 드는 유지비가 있다. 마을의 이장은 마을을 2개의 분리된 마을로 분할할 계획을 세우고 있다. 마을이 너무 커서 혼자서는 관리할 수 없기 때문이다. 마을을 분할할 때는 각 분리된 마을 안에 집들이 서로 연결되도록 분할해야 한다. 각 분리된 마을 안에 있는 임의의 두 집 사이에 경로가 항상 존재해야 한다는 뜻이다. 마을에는 집이 하나 이상 있어야 한다. 그렇게 마을의 이장은 계획을 세우다가..

Algorithm 2021.05.28

[Algorithm] 팀 결성

문제 학교에서 학생들에게 0번부터 N번까지 번호를 부여했다. 처음에는 모든 학생이 서로 다른 팀으로 구분되어 총 N+1개의 팀이 존재한다. 이때 선생님은 '팀 합치기' 연산과 '같은 팀 여부 확인' 연산을 사용할 수 있다. 1. 팀 합치기 연산은 두 팀을 합치는 연산이다. 2. 같은 팀 여부 확인 연산은 특정한 두 학생이 같은 팀에 속하는지를 확인하는 연산이다. 선생님이 M개의 연산을 수행할 수 있을 때, 같은 팀 여부 확인 연산에 대한 연산 결과를 출력하는 프로그램을 작성하시오. 입력조건 첫째줄에 N, M이 주어진다. 둘째줄부터 M+1번째 줄까지 각각의 연산이 주어진다. 팀 합치기 연산은 0 a b 형태로 주어진다. 같은 팀 여부 확인 연산은 1 a b 형태로 주어진다. 출력 조건 같은 팀 여부 확인 ..

Algorithm 2021.05.27

[Java] HashMap 클래스

HashMap은 Map을 구현한 클래스로 키(Key)와 값(Value)을 하나로 묶어서 하나의 데이터 (Entry)로 저장한다는 특징을 갖는다. 그리고 해싱을 사용하기 때문에 많은 양의 데이터를 검색하는데 좋다. HashMap은 Entry라는 내부 클래스를 정의하고 Entry 클래스 안에 key와 value를 선언한다. 그리고 HashMap에는 Entry 배열을 선언한다. (키와 값이 서로 관련된 값이기 때문에 하나의 클래스로 다루는 것) 키(key)는 컬렉션 내의 키 중에서 유일해야 한다. 값(value)는 데이터의 중복을 허용한다. 주요 메서드 boolean containsKey(Object key) 키가 포함되어 있는지 확인 boolean containsValue(Object value) 값이 포함..

Java 2021.05.27

2021. 05. 26

오랜만에 일기를 남긴다. 최근 코딩테스트 준비를 하면서 알고리즘 문제들을 많이 접하고 풀고 있다. 처음에 어렵기만 했던 문제들도 점차 접근하기 수월해지고 있다. (아직 많이 부족하지만) 알고리즘 지난달 말 갑작스럽게 알고리즘 전공서적을 꺼내든 것은 네이버 코딩테스트 이후였다. 나는 정말 실력이 많이 부족했다. 당연한 결과였다. 왜 알고리즘, 코딩테스트가 필요할까 궁금했다. 내가 느낀 알고리즘의 필요성 내가 백엔드 개발자, 아니 개발자로 일한다면, 코딩을 통해 내가 생각하는 것, 원하는 것을 구현할 수 있어야 한다. 그리고 단순한 구현이 아니라 클린한 코드까지 목표를 가져야 한다. 알고리즘은 발판이 되어줄 것이라는 생각이 들었다. (단순한 발판보다는 든든한 반석) 다시 알고리즘을 정리하고 푸는 재미와 알아..

Journal 2021.05.26

[Algorithm] 서로소 집합 자료구조

서로소 집합은 공통 원소가 없는 두 집합을 의미한다. 서로소 집합 자료구조란 서로소 부분 집합들로 나누어진 원소들의 데이터를 처리하기 위한 자료구조다. 연산 서로소 집합 자료구조는 union과 find 2개의 연산으로 조작할 수 있다. union 연산은 2개의 원소가 포함된 집합을 하나로 합치는 연산이고, find 연산은 특정한 원소가 속한 집합이 어떤 집합인지 알려주는 연산이다. 서로소 집합 자료구조 서로소 집합 자료구조에서 집합을 표현하는 서로소 집합 계산 알고리즘은 다음과 같다. 1. union 연산을 확인해, 서로 연결된 두 노드 A, B를 확인한다. A와 B의 루트 노드 A'와 B'를 찾는다. A'를 B'의 부모 노드로 설정한다. 2. 모든 union 연산을 처리할 때까지 1번 과정을 반복한다...

Algorithm 2021.05.26
반응형