본문 바로가기

분류 전체보기

(33)
[백준] 25187번 : 고인물이 싫어요 (C++) https://www.acmicpc.net/problem/25187문제재형이는 청정수를 좋아하고 고인물을 싫어한다. 오늘도 청정수를 구하기 위해 물탱크들이 있는 마을에 방문한다.마을에는 N개의 물탱크가 존재하고, 각 물탱크는 청정수 또는 고인물을 저장하고 있다. 그리고 물탱크는 공급의 편의를 위해 M개의 파이프로 서로 연결되어 있다.청정수를 얻기 위해 K번 물탱크에 방문했을 때, K번 물탱크와 K번 물탱크에서 0개 이상의 파이프를 거쳐 이동 가능한 물탱크 중, 청정수가 담긴 물탱크의 수가 고인물이 담긴 물탱크의 수보다 더 많은 경우 청정수를 얻을 수 있다.방문할 예정인 물탱크에 대한 정보가 주어질 때마다, 청정수를 얻을 수 있는지 구해보자. 입력첫째 줄에 물탱크의 수 N(1≤N≤100000)과 파이프의 ..
[백준] 27468번 : 2배 또는 0.5 배 (C++) https://www.acmicpc.net/problem/27468 문제KSA 학생들은 아래 조건을 만족하는 길이가 N인 수열을 좋아한다. 1,2,⋯,N이 A에 정확히 한 번씩 등장한다.임의의 인접한 세 수 A_i, A_{i+1}, A_{i+2}에 대해 |A_{i+1}−A_i|=|A_{i+2}−A_{i+1}|×2 또는  |A_{i+1}−A_i|=|A_{i+2}−A_{i+1}|×0.5이다.정수 N이 주어졌을 때, 조건을 만족하는 수열이 존재하는지 판별하고 있다면 아무거나 찾아보자.입력첫 번째 줄에 정수 N이 주어진다.출력첫 번째 줄에 조건을 만족하는 수열이 존재한다면 YES, 아니라면 NO를 출력한다.만약 그러한 수열이 존재한다면, 두 번째 줄에 N개의 정수 A1,A2,⋯,AN출력한다.정답이 여러 개 존재..
[백준] 1082번 : 방 번호 (C++) https://www.acmicpc.net/problem/1082 문제스타트링크가 입주한 사무실은 방 번호를 직접 정할 수 있다. 방 번호를 정하려면 1층 문방구에서 파는 숫자를 구매해야 한다. 숫자를 구매하기 위해 준비한 금액은 M원이다.문방구에서 파는 숫자는 0부터 N-1까지이고, 각 숫자 i의 가격은 Pi이다. 문방구에서는 같은 숫자를 여러 개 구매할 수 있고, 문방구는 매우 많은 재고를 보유하고 있기 때문에, 항상 원하는 만큼 숫자를 구매할 수 있다. 방 번호가 0이 아니라면 0으로 시작할 수 없다.예를 들어, N = 3, M = 21, P0 = 6, P1 = 7, P2 = 8이라면, 만들 수 있는 가장 큰 방 번호는 210이다. 최대 M원을 사용해서 만들 수 있는 가장 큰 방 번호를 구해보자.입..
[파일처리] HDD의 구조 및 저장 방식 HDD란?하드디스크(Hard Disk Drive, HDD)는 데이터를 저장하고 읽는 역할을 하는 컴퓨터의 주요 저장 장치이다. 내부에 회전하는 자기 디스크(플래터, platter)와 이를 읽고 쓰는 헤드(head)가 있으며, 전자기적인 방식으로 데이터를 기록한다.   하드디스크의 주요 특징비휘발성 저장 장치전원이 꺼져도 데이터가 사라지지 않는다.대용량 저장 가능일반적으로 테라바이트(TB) 단위까지 저장 가능하며, SSD보다 저렴한 비용으로 많은 데이터를 저장할 수 있다.자기 디스크 기반 작동플래터가 빠르게 회전하며, 자기 헤드가 데이터를 읽고 쓴다.속도와 내구성SSD(Solid State Drive)에 비해 속도가 느리고 충격에 취약하다.평균 회전 속도는 5400RPM, 7200RPM이며, 서버용은 10..
[파일처리] 파일처리의 개념 / SystemCall에서의 파일 관리 Physical Files과 Logical FilesPhysical File:- 하드웨어 레벨에서 실제 데이터가 메모리나 디스크에 저장되는 방법- OS에 의해 관리되는 file directory- secondary storage에 존재함Logical File:- physical file를 신경쓰지 않고, 유저나 프로그래머에 의해 보이고, 접근되고, 관리되는 데이터정의는 위와 같지만 사실 이 설명만으로는 잘 들어오지 않는 개념이다.예를 하나 들어보자. 만약에 내가 다른 사람에게 전화를 하고싶을 때 필요한것은 무엇인가? 전화를 걸고자 하는 사람의 이름과 전화번호애 대한 정보만 있으면 전화를 걸 수 있다. 나는 전화가 어떻게 회선을 타고 신호가 전달되는지, 네트워크 인프라 등에대한 정보를 알 필요가 없다. 이..
[시스템 프로그래밍] SIC머신 SIC/XE머신 ※ 본 글은 아래 'System Software 3rd Edition을 기반으로 작성되었습니다.  SIC 머신이란?SIC머신은 Simplified Instructional Computer로 교육용으로 설계된 가상의 컴퓨터 시스템이다.컴퓨터 아키텍처와 어셈블리 프로그래밍을 학습하기 위한 목적으로 사용되며, 간단한 구조와 명령어 셋을 가지고 있어 기초적인 시스템 설계 및 기계어 프로그래밍을 배우는 데 유용하다.SIC 머신의 메모리 구조1byte = 8bit : 8bit가 1byte라는것은 진리1word = 3byte : SIC머신에서는 1word의 크기를 3byte로 지정한다. 다른 시스템과 다르니 4byte로 착각하지 말자.2^15 Mem Size : 2^15개(32KB) 크기의 메모리 사이즈를 가진다.S..
[백준] 9963번 : N - Queen (C++) https://www.acmicpc.net/problem/9663 문제N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다.N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오.입력첫째 줄에 N이 주어진다. (1 ≤ N 출력첫째 줄에 퀸 N개를 서로 공격할 수 없게 놓는 경우의 수를 출력한다.예제 입력 1 8예제 출력 1 92N개의 퀸을 서로 공격할 수 없게 배치하는 경우의 수를 구하는 유명한 문제이다.제한시간이 10초로 그냥 단순하게 백트래킹을 하면 되는 문제 처음에는 board[n][n]을 만들고 퀸이 배치 될 때 마다 board[i][j] + 퀸이 공격 가능한 칸에 +1을 하여 방문했음을 표시하였지만, 칸마다 방문여부를 표시하는 것은 ..
[백준] 17070번 : 파이프 옮기기 1(C++) https://www.acmicpc.net/problem/17070 문제유현이가 새 집으로 이사했다. 새 집의 크기는 N×N의 격자판으로 나타낼 수 있고, 1×1크기의 정사각형 칸으로 나누어져 있다. 각각의 칸은 (r, c)로 나타낼 수 있다. 여기서 r은 행의 번호, c는 열의 번호이고, 행과 열의 번호는 1부터 시작한다. 각각의 칸은 빈 칸이거나 벽이다.오늘은 집 수리를 위해서 파이프 하나를 옮기려고 한다. 파이프는 아래와 같은 형태이고, 2개의 연속된 칸을 차지하는 크기이다. 파이프는 회전시킬 수 있으며, 아래와 같이 3가지 방향이 가능하다.파이프는 매우 무겁기 때문에, 유현이는 파이프를 밀어서 이동시키려고 한다. 벽에는 새로운 벽지를 발랐기 때문에, 파이프가 벽을 긁으면 안 된다. 즉, 파이프는 ..