반응형

전체 글 408

[백준 2178] 미로탐색 (BFS-너비우선탐색)

안녕하세요. BlockDMask 입니다.오늘은 BFS algorithm 기반으로 미로탐색 문제를 풀어보았습니다.0. 제목백준 2178 미로탐색(BFS-너비우선탐색)BOJ 2178 MAZE(BFS-너비우선탐색)1. 문제 설명 N x M 크기의 배열로 표현되는 미로가 있습니다. 4x6 예시.[101111][101010][101011][111011] 미로에서 1은 이동할 수 있는 칸을 나타내고 0은 이동할 수 없는 칸을 나타냅니다. 이러한 미로가 주어졌을 때 [0,0] 에서 출발하여 배열기준 [N-1, M-1] 의 위치로 이동할 때 지나야 하는 최소의 칸 수를 구하는 프로그램을 구현하면 됩니다. 입력 : 첫째 줄에 두 정수 N, M (2 지나간 길을 알릴 뿐만 아니라 몇번째에 왔는지 숫자를 기록하면서 이동해야..

[백준 9663] N-Queen(DFS 깊이우선탐색)

안녕하세요 BlockDMask 입니다.오늘은 다들 학교에서 한번쯤 들어본 N-Queen 체스 문제를 풀어보았습니다.은근 신경써야 하는 부분이 많더군요;;;;0. 제목백준 9663 N-Queen (DFS)BOJ 9663 N-Queen (DFS)1. 문제 설명N-Queen 문제는 체스판 크기가 N x N 인 체스판 위에 퀸 N개를 서로 공격하지 못하도록 배치하는 총 방법의 수를 구하는 프로그램을 작성하는 문제입니다.정수 n이 입력으로 들어옵니다. (1 그 다음 행에서 위의 행의 퀸과 일치 하지 않는 맨 왼쪽 열에 퀸을 놓습니다. -> n 번째 열까지 도달한다면 전체 count 를 하나 더합니다. -> 그렇지 않다면 다시 백트랙킹합니다. 배열 arr은 열의 개수 를 뜻합니다.같은 열(세로)라인에 Queen이 ..

[백준 2667] 단지번호붙이기(BFS-너비우선탐색)

안녕하세요 BlockDMask 입니다. 171011 일자 문제 입니다.포스팅을 늦게 했네요;;이번시간엔 단지번호 붙이기를 BFS 방식으로 풀어보았습니다.단지 번호 붙이기 DFS 방식으로 푼 포스트는 [여기] 있습니다.0. 제목백준 2667 단지 번호 붙이기BOJ 2667 단지 번호 붙이기1. 문제 설명 과 같이 정사각형(5

[이론] 소켓(Socket)이란?

안녕하세요. BlockDMask 입니다.TCP/IP 소켓 프로그래밍에 대해 알아보겠습니다. > 소켓(Socket)이란? - 소켓을 이용하면 인터넷의 복잡한 하부구조에 대한 세부적인 지식 없이도 손쉽게 네트워크 프로그램을 개발할 수 있다. - TCP/IP 4계층 (네트워크 접속, 인터넷, 전송, 응용 계층)에서 응용계층 바로 아래에 소켓 계층을 만들어서 응용 계층 하위단계의 자세한 내용을 모른다 하더라도 소켓을 이용하면 응용계층만 신경쓰고 네트워크 프로그램을 개발 할 수 있다. - "하위계층 몰라도되니까 응용계층만 생각하고 소켓 가지고 네트워크 개발해라" (뭐 이런 요지에서 UC 버클리 대학에서 만들었다는..?)- BSD 소켓 (Berkeley Software Distribute Socket) : UC 버..

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

안녕하세요. BlockDMask 입니다.오늘은 virtual box 에 만들어 놓은 우분투용 가상 머신에우분투 OS를 설치 하는 과정을 포스팅 하겠습니다. 우선 Virtual Box에 우분투용 가상 머신이 있어야 합니다.우분투 iso 파일이 있어야합니다. 준비가 안되신 분들은 [바로가기] 포스트를 확인하시고 준비해주고 와주세요! > 화살표 부분인 [광학 드라이브]부분을 클릭해 줍니다. > 다운받은 우분투(Ubuntu) ISO 파일을 열어 줍니다. > 설치 화면이 뜹니다.언어를 선택해 줍니다. English를 선택하시거나 > 아래를 보면 한국어도 지원이 됩니다 > 설치 중에 업데이트 할건지 체크 하고 Continue > Continue! > 날짜랑 시간의 기준을 알기 위해 위치를 입력해 줍니다. > Key..

[백준 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..

반응형