본문 바로가기

분류 전체보기103

[BOJ] ACM Craft(1005) 레벨 : 골드3 종류 : 위상정렬 문제 서기 2012년! 드디어 2년간 수많은 국민들을 기다리게 한 게임 ACM Craft (Association of Construction Manager Craft)가 발매되었다. 이 게임은 지금까지 나온 게임들과는 다르게 ACM크래프트는 다이나믹한 게임 진행을 위해 건물을 짓는 순서가 정해져 있지 않다. 즉, 첫 번째 게임과 두 번째 게임이 건물을 짓는 순서가 다를 수도 있다. 매 게임시작 시 건물을 짓는 순서가 주어진다. 또한 모든 건물은 각각 건설을 시작하여 완성이 될 때까지 Delay가 존재한다. 위의 예시를 보자. 이번 게임에서는 다음과 같이 건설 순서 규칙이 주어졌다. 1번 건물의 건설이 완료된다면 2번과 3번의 건설을 시작할수 있다. (동시에 진행이 가능하.. 2021. 7. 3.
[BOJ] Strahler 순서(9470) 레벨 : 골드3 분야 : 위상정렬 문제 지질학에서 하천계는 유향그래프로 나타낼 수 있다. 강은 간선으로 나타내며, 물이 흐르는 방향이 간선의 방향이 된다. 노드는 호수나 샘처럼 강이 시작하는 곳, 강이 합쳐지거나 나누어지는 곳, 바다와 만나는 곳이다. 네모 안의 숫자는 순서를 나타내고, 동그라미 안의 숫자는 노드 번호를 나타낸다. 하천계의 Strahler 순서는 다음과 같이 구할 수 있다. 강의 근원인 노드의 순서는 1이다. 나머지 노드는 그 노드로 들어오는 강의 순서 중 가장 큰 값을 i라고 했을 때, 들어오는 모든 강 중에서 Strahler 순서가 i인 강이 1개이면 순서는 i, 2개 이상이면 순서는 i+1이다. 하천계의 순서는 바다와 만나는 노드의 순서와 같다. 바다와 만나는 노드는 항상 1개이며,.. 2021. 7. 3.
[BOJ]두 동전(16197) 문제 N×M 크기의 보드와 4개의 버튼으로 이루어진 게임이 있다. 보드는 1×1크기의 정사각형 칸으로 나누어져 있고, 각각의 칸은 비어있거나, 벽이다. 두 개의 빈 칸에는 동전이 하나씩 놓여져 있고, 두 동전의 위치는 다르다. 버튼은 "왼쪽", "오른쪽", "위", "아래"와 같이 4가지가 있다. 버튼을 누르면 두 동전이 버튼에 쓰여 있는 방향으로 동시에 이동하게 된다. 동전이 이동하려는 칸이 벽이면, 동전은 이동하지 않는다. 동전이 이동하려는 방향에 칸이 없으면 동전은 보드 바깥으로 떨어진다. 그 외의 경우에는 이동하려는 방향으로 한 칸 이동한다.이동하려는 칸에 동전이 있는 경우에도 한 칸 이동한다. 두 동전 중 하나만 보드에서 떨어뜨리기 위해 버튼을 최소 몇 번 눌러야하는지 구하는 프로그램을 작성하시.. 2021. 7. 1.
[BOJ] 신기한 소수(2023) 문제 수빈이가 세상에서 가장 좋아하는 것은 소수이고, 취미는 소수를 가지고 노는 것이다. 요즘 수빈이가 가장 관심있어 하는 소수는 7331이다. 7331은 소수인데, 신기하게도 733도 소수이고, 73도 소수이고, 7도 소수이다. 즉, 왼쪽부터 1자리, 2자리, 3자리, 4자리 수 모두 소수이다! 수빈이는 이런 숫자를 신기한 소수라고 이름 붙였다. 수빈이는 N자리의 숫자 중에서 어떤 수들이 신기한 소수인지 궁금해졌다. N이 주어졌을 때, 수빈이를 위해 N자리 신기한 소수를 모두 찾아보자. 입력 첫째 줄에 N(1 ≤ N ≤ 8)이 주어진다. 출력 N자리 수 중에서 신기한 소수를 오름차순으로 정렬해서 한 줄에 하나씩 출력한다. 예제 입력 1 복사 4 예제 출력 1 복사 2333 2339 2393 2399 2.. 2021. 7. 1.
[Database] 일반상식 1. DBMS DBMS는 DataBaseManagementSystem의 약자로 사용자가 데이터에 관한 정보를 가능한 효율적이고 효과적으로 구성하는 것으로 복원 및 검색을 할 수 있도록 하는 응용프로그램의 모음이다. 즉, 데이터의 집합인 데이터 베이스를 더 체계적으로 관리하고 이용할 수 있게 해주는 소프트웨어 시스템을 말한다. 1-1) RDBMS RDBMS의 R은 Relational의 약자로 관계형 데이터 모델에 기초를 둔 RDB를 생성하고 수정 하고 관리 하는 소프트웨어이다. 테이블 끼리 서로 연관되어 있어 일반 DBMS보다 효율적으로 데이터를 저장, 구성 및 관리할 수 있다. 정규화를 통해 데이터의 중복성을 최소화 하며 트랜잭션을 수행하는 것이 더 쉽다. 데이터의 원자성, 일관성, 격리 및 내구성을 유.. 2021. 6. 23.
[Database] InnoDB MySql을 사용할 때 아무 생각없이 사용하는 InnoDB에 대해서 알아보려고 한다. 1. InnoDB 장점 MySQL의 대표적인 데이터베이스 엔진이다. 트랜잭션-세이프 스토리지 엔진이다. commit, rollback, 장애복그 row-level locking, 외래키 등 많은 기능을 지원한다. 다수의 사용자, 동시접속 퍼포먼스를 제공한다. 높은 퍼포먼스가 필요한 대용량 사이트에 적합하다 단점 Deadlock 발생 NODE간 데이터 체크로 인해, Deadlock 발생 가능성이 존재 많은 자원 소모 대용량 처리를 하게 된다면, 순간적으로 많은 자원을 소모한다. 데이터 복구의 어려움 단순하게 파일 백업으로 복구를 하는게 아니라, 특정한 방법을 사용하여 복구해야한다. 2021. 6. 22.
[프로그래밍언어] 자바(2) 언어적 부분 1. equals vs == 자바에서 대표적인 차이의 개념으로 어떤것을 비교하는지에 대한 내용이다. 1) equals 객체 자체를 비교하는 방법으로 각 클래스에 Overriding되어 있는 메서드이다. 기본은 ==로 되어있어 비교하며 String의 경우 문자열을 비교하여 같은 문자열인지 확인한다. 즉, 같은 문자열일 경우 true를 다른 문자열일 경우 false를 반환한다. public boolean equals(Object anObject) { if (this == anObject) { return true; } if (anObject instanceof String) { String aString = (String)anObject; if (!COMPACT_STRINGS || this.coder == .. 2021. 6. 21.
[ BOJ] 괄호의 값(2504) 분류 - 스택, 재귀, Devide&Conquer 난이도 - 실버2 문제 4개의 기호 ‘(’, ‘)’, ‘[’, ‘]’를 이용해서 만들어지는 괄호열 중에서 올바른 괄호열이란 다음과 같이 정의된다. 한 쌍의 괄호로만 이루어진 ‘()’와 ‘[]’는 올바른 괄호열이다. 만일 X가 올바른 괄호열이면 ‘(X)’이나 ‘[X]’도 모두 올바른 괄호열이 된다. X와 Y 모두 올바른 괄호열이라면 이들을 결합한 XY도 올바른 괄호열이 된다. 예를 들어 ‘(()[[]])’나 ‘(())[][]’ 는 올바른 괄호열이지만 ‘([)]’ 나 ‘(()()[]’ 은 모두 올바른 괄호열이 아니다. 우리는 어떤 올바른 괄호열 X에 대하여 그 괄호열의 값(괄호값)을 아래와 같이 정의하고 값(X)로 표시한다. ‘()’ 인 괄호열의 값은 2이다.. 2021. 6. 20.