전체 글 433

[백준 2667] 단지번호붙이기(DFS-깊이우선탐색)

안녕하세요. BlockDMask 입니다.날이 갑자기 추워졌네요;; 다들 ;; 옷 따숩게 입으시길;;오늘자 문제 시작하겠습니다.이번 포스트는 단지번호 붙이기를 DFS 방식으로 풀었습니다.단지번호 붙이기 BFS 방식으로 푼 글은 [여기] 있습니다.0. 제목백준 2667 단지 번호 붙이기BOJ 2667 단지 번호 붙이기1. 문제 설명 과 같이 정사각형(5

[Linux] 우분투(Ubuntu) 설치하기(1/2)

안녕하세요. BlockDMask 입니다.이번시간에는 VM Virtual Box 에 우분투(Ubuntu) 리눅스(Linux)를 설치하는 과정을 살펴보겠습니다. [ Virtual Box에 우분투(Ubuntu) 설치하기!! ] 우선, Virtual Box가 설치 되어있어야 합니다.설치 과정은 [여기] 에 있습니다. 1. 우분투(Ubuntu)를 설치할 가상 머신 만들기 > 새로 만들기를 클릭 합니다. > 우분투를 설치 할 예정이므로 이름, 종류 버전을 알맞게 기입합니다. > 메모리 크기를 지정합니다. 추천해주는 대로 1024MB로 설정합니다. > "지금 새 가상 하드 디스크 만들기"를 클릭 해 줍니다. > 가상 하드 디스크를 만들 것 이므로 2번째 것을 선택해 줍니다. > 용량을 고정크기로 해줍니다. 각각의 장..

[탐색] lower_bound, upper_bound

안녕하세요. BlockDMask 입니다.오늘은 이진탐색과 유사하나 조금 다른 lower_bound 와 upper_bound에 대해 알아보겠습니다.1. lower_boundlower_bound 란? - 이진탐색(Binary Search)기반의 탐색 방법입니다. (배열 또는 리스트가 정렬 되어있어야 한다.) - lower_bound는 찾으려 하는 key값이 "없으면" key값보다 큰 가장 작은 정수 값을 찾습니다. - 같은 원소가 여러개 있어도 상관 없으며, 항상 유일한 해를 구할 수 있습니다. - 구간이 [start, end]인 배열이 있을때, 중간위치의 index를 mid 라고 하면, arr[mid-1] = key 인 최소의 m 값을 찾으면 됩니다. (m>=2) 직접 ..

[백준 1764] 듣보잡

안녕하세요. BlockDMask 입니다.연휴도 끝났고;; 많이 쉬었네요;; ㅠㅠ오늘의 문제 풀어보겠습니다.0. 제목백준 1764 듣보잡BOJ 1764 듣보잡문제 이름이 참.. 듣보잡이라니 ㅎㅎ 1. 문제 설명 듣지도 못한 사람의 명단과, 보지도 못한 사람의 명단이 주어질 때, 듣지도 보지도 못한 사람의 명단을 구하는 프로그램을 작성하시오. 입력 -- 첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄 부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터는 보도 못한 사람의 이름이 순서대로 주어진다. 이름은 띄어쓰기 없이 영어 소문자로만 이루어지며, 그 길이는 20 이하이다. N, M 은 500,000 이하의 자연수이다. 출력 -- 듣보잡의 수와 그 명단..

[컴퓨터 기초] 데이터의 단위

안녕하세요. BlockDMask 입니다.이번 글에서는 컴퓨터 정보 크기의 단위에 대해 알아보도록 하겠습니다. - 컴퓨터에서 정보를 나타내는 최소 단위는 비트(bit)로써 0과 1로 구성되어있습니다. - 8개의 비트를 묶어서 바이트(byte)라는 단위로 나타내는데 이를 기본 정보처리의 단위로 사용합니다.Kilobyte(KB) / 2^10 / 10^3 2의 10제곱이 1024 이므로 오차는 존재하지만, 10^3인 1000과 비슷하여 단위를 10^3으로 나타냅니다. Megabyte(MB) / 2^20 / 10^6 Gigabyte(GB) / 2^30 / 10^9 Terabyte(TB) / 2^40 / 10^12 Petabyte(PB) / 2^50 / 10^15

[탐색] 이진탐색 (Binary Search) 구현 방법

안녕하세요. BlockDMask 입니다. 알고리즘 코딩 사이트(백준 온라인 저지)에서 '수 찾기' 문제를 풀다가 이진탐색(Binary Search)이 나와서, 이번 기회에 정리를 해볼까 합니다. 1. 이진탐색(Binary Search) 이란.이진 탐색 알고리즘(Binary Search Algorithm)은 오름차순으로 정렬된 리스트에서 특정한 값의 위치를 찾는 알고리즘 입니다. 오름차순으로 정렬된 리스트의 중간 값을 임의의 값으로 선택하여, 찾고자 하는 Key값과 비교하는 방식으로 돌아가는 알고리즘 입니다. 정렬된 리스트에서만 사용할 수 있다는 단점이 존재합니다. 검색이 될때마다 선형탐색(Linear Search)와는 비교할 수 없게 빨라집니다. 2. 이진탐색(Binary Search)의 시간 복잡도 입..

[Linux] Virtual box 설치하기

안녕하세요. BlockDMask 입니다.윈도우에 virtual box를 설치 한 후 리눅스(Ubuntu)를 설치 하는 것을 작성해보겠습니다.이번 글에서는 윈도우에 Virtual box를 설치하는 방법을 알아보겠습니다. 1. Window OS에 virtual box(가상머신) 설치하기!Oracle에서 제공해주는 VM(가상머신)인 VirtualBox를 설치합니다.아래 URL에 들어가서 Download 클릭!https://www.virtualbox.org/ 클릭을 하면 아래와 같은 화면이 나옵니다> hosts로 지정할 OS를 선택합니다.(=virtual box를 다운받을 컴퓨터의 OS를 선택하면 됩니다!) 저는 Window Desktop에 받을 거기 때문에 Windows Hosts를 클릭해서 다운 받았습니다...

[백준 1920] 수 찾기 (이진탐색)

안녕하세요. BlockDMask 입니다. 오늘은 '수 찾기' 라는 문제를 풀어보았습니다.음..은근히 생각을 하게 하는 문제였습니다. '시간초과' 때문에;; ㅎㅎ 170906 문제 빼먹음 -> 171008 완료0. 제목백준 1920 수 찾기 (이진탐색)BOJ 1920 수 찾기 (Binary Search)1. 문제설명 N개의 정수 A[1], A[2], A[3], A[4], ..., A[N-2], A[N-1], A[N] 이 주어져 있을 때, 이 안에 X라는 정수가 존재하는지 알아내는 프로그램을 구현하면 됩니다. 입력 -- 첫째 줄에 자연수 N(1

[백준 2562] 최대값

안녕하세요. BlockDMask 입니다.오늘의 문제 풀어보겠습니다. 170905 문제 빼먹음 -> 171008 완료0. 제목백준 2562 최대값BOJ 2562 최대값1. 문제 설명 9개의 서로 다른 자연수가 주어질 때, 이들 중 최대값을 찾고 그 최대값이 몇 번째 수인지 구하는 프로그램을 만들면 됩니다. 예를들어, 서로 다른 9개의 자연수 3, 29, 30, 12, 55, 80, 9, 92, 60 이 주어지면, 이들 중 최대값은 92 이고 이 값은 8번째 수 입니다. 주어지는 자연수의 크기는 100보다 작습니다. 2. 풀이 과정 배열에 각 수를 저장한 후 선형탐색을 이용하여 배열 전체를 탐색하는 방법으로, 최대값을 구하는 방식으로 풀면 됩니다. 3. 코드 123456789101112131415161718..

[알고리즘의 정의] Algorithm?

[Algorithm ?] 주어진 문제를 해결하기 위한 단계, 절차 또는 여러 동작의 모임를 말한다. 이 절차에는 입력값과 출력값이 존재해야하며, 유한한 단계를 거쳐서 반드시 종료 되어야 한다. 입력 : 외부에서 제공되는 자료가 0개 이상 존재해야한다.출력 : 적어도 1개 이상의 서로 다른 결과를 내어야 한다.(즉 모든 입력에 하나의 출력이 나오면 안됨)명확성 : 수행 과정은 명확하고 모호하지 않은 명령어로 구성되어야 한다.유한성(종결성) : 알고리즘의 명령어들은 끝이 있는 계산을 수행한 후에 종료해야 한다.(출처-동아출판 중학교 정보책 날짜-2017-7-11)효율성 : 모든 과정은 명백하게 실행 가능(검증 가능)한 것이어야 한다. https://ko.wikipedia.org/wiki/%EC%95%8C%E..

[백준 2309] 일곱 난쟁이 (브루트 포스)

안녕하세요. BlockDMask 입니다.오늘은 백준 온라인 저지에 단계별로 풀어보기 중 브루트 포스 카테고리에 있는 문제를 풀어보았습니다.170904 문제 빼먹음 -> 171006 완료 0. 문제백준 2309 일곱 난쟁이 (브루트 포스)BOJ 2309 일곱 난쟁이 (brute force)**Brute Force(브루트 포스)란 : 무식하게 푼다, 가능한 방법을 전부 만들어 보는 알고리즘, 완전탐색(exhaustive search)라고도 합니다. 1. 문제설명 왕비를 피해 일곱 난쟁이들과 함께 평화롭게 생활하고 있던 백설공주에게 위기가 찾아왔다. 일과를 마치고 돌아온 난쟁이가 일곱 명이 아닌 아홉명이었던 것이다. 아홉 명의 난쟁이는 모두 자신이 "백설 공주와 일곱 난쟁이"의 주인공이라고 주장했다. (백설공..

[백준 4673] 셀프 넘버

안녕하세요. BlockDMask 입니다.추석날 2번째 문제 입니다. 왔다 갔다 차안에서 문제를 풀고 있습니다. 길이 많이 막히네요;;170818 문제 빼먹음 -> 171004 완료0. 제목백준 4673 셀프 넘버BOJ 4673 self number1. 문제 설명 셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다.양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의한다.예를 들어 d(42) = 42 + 4+ 2 = 48 이다. 양의 정수 n 이 주어졌을 때, 이 수를 시작해서 n, d(n), d(d(n)), d(d(d(n))), ... 과 같은 무한 수열을 만들 수 있다. 예를들어, 33으로 시작한다면 다음수는 33 + 3 + 3 = 39 이고, 그 다음 ..

[백준 2941] 크로아티아 알파벳

안녕하세요. BlockDMask 입니다.다들 즐추 하고 계시죠? 중간에 시간이 좀 떠서 문제를 풀어 보았습니다.170814 문제 빼먹음 -> 171004 완료0. 제목백준 2941 크로아티아 알파벳BOJ 2941 크로아티아 알파벳1. 문제 설명 이전 운영체제에서는 크로아티아 알파벳을 입력할 수 없었다고 한다. 아래 그림과 같이 크로아티아 알파벳을 변경해서 입력했습니다. 크로아티아 알파벳 변경 č c= ć c- dž dz= ñ d- lj lj nj nj š s= ž z= 이런식으로 바꾸어 사용합니다. 예를 들어, ljes=njak 는 크로아티아 알파벳 6개로(lj, e, š, nj, a, k)로 이루어져있다. ddz=z= 는 크로아티아 알파벳 3개로(d, dz=, z=)로 이루어져있다. 단어가 주어졌을때,..

[백준 5622] 다이얼

안녕하세요 . BlockDMask 입니다.170810 일자 문제 입니다. (170810 문제 빼먹음 -> 171003 완료) 0. 제목백준 5622 다이얼BOJ 5622 다이얼1. 문제 설명 전화를 걸고 싶은 번호가 있으면, 숫자를 하나 누르고 돌린다. 숫자 하나를 누른 상태에서 금 속 핀이 있는 곳 까지 시계 방향으로 돌려야 한다. 다른 숫자들을 누르려면 원래 위치로 돌아가기를 기다려야 한다. 숫자 1을 걸려면 총 2초가 필요하다. 1보다 큰 수를 거는데 걸리는 시간은 이보다 더 걸리며, 한 칸 옆에 있는 숫자를 걸기 위해서는 1초씩 더 걸린다. 입력은 문자열로 들어온다. 즉, 어떤 전화를 걸때, 각 알파벳에 해당하는 숫자를 걸면 된다. 예를 들어, UNUCIC는 868242와 같다. 단어가 주어졌을 ..

[백준 13458] 시험 감독

안녕하세요.// 오늘도 어김없이 문제를 풀고온 BlockDMask 입니다.곧 추석이네요 ㅎㅎ 추석때도 전을 먹으며 일일 일문제 하도록 노력해보겠습니다.0. 제목백준 13458 시험 감독BOJ 13458 시험 감독1. 문제 설명 총 N개의 시험장이 있고, 각각의 시험장 마다 응시자 들이 있습니다. i 번 시험장에 있는 응시자의 수는 Ai 명 입니다. 시험 감독관은 총감독관과 부감독관으로 두 종류가 있습니다. 총 감독관은 한 교실에서 감시 할 수 있는 응시자의 수가 B 명이고, 부감독관은 한 교실에서 감시할 수 있는 응시자의 수가 C 명 입니다. 각각의 시험장에 총감독관은 오직 1명만 있어야 한다. 부감독관은 여러명 있어도 상관없다. 각 시험장 마다 응시생들을 모두 감시해야 합니다. 이때 필요한 감독관 수의..