거꾸로 바라본 세상
article thumbnail
3. Stack(스택)
Algorithms/structure 2023. 4. 17. 09:45

스택(Stack) 먼저 들어간 데이터가 가장 마지막에 나오는 구조(Last In, First Out : LIFO) 삽입과 삭제가 한쪽 끝에서만 자료를 넣고 뺄 수 있다. ex) 자동메모리, 네트워크 프로토콜 스택(Stack)의 주요 기능 스택의 초기화 int stack[100]; //스택 배열 int size = 0; // 스태의 크기 삽입(Push) 스택 위에 새로운 노드를 쌓는 작업 void push(int data) { stack[size] = data; size = size + 1; } 삭제(Pop) 스택에서 최상위 노드를 걷어내는 작업 int pop() { if (size < 0) return 0; int pop = stack[size]; size = size - 1; return pop; } ..

article thumbnail
2. Linked List(연결리스트)
Algorithms/structure 2023. 4. 17. 09:29

Linked List(연결리스트) 개념과 구조 데이터가 연속적인 리스트 새로운 노드를 삽입하거나 삭제가 간편 링크라는 개념을 통해 물리 메모리를 연속적으로 사용하지 않아도 된다. 데이터를 구조체로 묶어 포인터로 연결 Linked List에는 기본적으로 Node와 Link라는 용어를 사용 HeadNode에는 데이터를 저장하지 않는다. 단지 LinkedList의 시작부분임을 나타낸다.(ex:기관차에서 headNode는 승객이 타지 않음) LinkedList의 마지막 부분을 나타내는 노드도 있다. End Node or Tail Node라고 불리며, 데이터를 저장하지 않는다. 즉, Head, Tail(End) 노드는 데이터를 저장하지 않음(저장할 수 없다는 것이 아니라 묵시적으로 데이터를 저장하지 않는다는 것)..

1. 알고리즘 개요(Algorithm Overview)
Algorithms/structure 2023. 4. 10. 17:59

알고리즘(Algorithm) 알고리즘은 수학, 컴퓨터과학, 언어학 또는 관련분야에서 어떠한 문제를 해결하기 위해 정해진 일련의 절차나 방법을 공식화한 형태로 표현한 것을 말한다. 계산 또는 작업을 처리하기 위한 순서 요리의 레시피(요리의 재료를 이용하여 레시피 대로 요리한 다음 요리를 완성) 특정문제를 컴퓨터로 해결하기 위한 순서 어떤 문제를 해결하는 방법을 모두 알고리즘이라 한다. 입력 0개 이상의 입력이 존재햐아한다 출력 1개 이상의 출력이 존재해야한다 명백성 각 명령어의 의미는 모호하지 않고 명확해야한다 유한성 한정된 수의 단계 후에는 반드시 종료되어야한다 유효성 각 명령어들은 실행 가능한 연산이어야 한다 코딩 테스트나 인터뷰에서 알고리즘을 보는 이유는 문제를 모델링하고 해결하는 능력을 알아보기 위..

article thumbnail
[BAEKJOON:2775]부녀회장이 될테야

[BAEKJOON:2775]부녀회장이 될테야 문제 평소 반상회에 참석하는 것을 좋아하는 주희는 이번 기회에 부녀회장이 되고 싶어 각 층의 사람들을 불러 모아 반상회를 주최하려고 한다. 이 아파트에 거주를 하려면 조건이 있는데, “a층의 b호에 살려면 자신의 아래(a-1)층의 1호부터 b호까지 사람들의 수의 합만큼 사람들을 데려와 살아야 한다” 는 계약 조항을 꼭 지키고 들어와야 한다. 아파트에 비어있는 집은 없고 모든 거주민들이 이 계약 조건을 지키고 왔다고 가정했을 때, 주어지는 양의 정수 k와 n에 대해 k층에 n호에는 몇 명이 살고 있는지 출력하라. 단, 아파트에는 0층부터 있고 각층에는 1호부터 있으며, 0층의 i호에는 i명이 산다. 입력 첫 번째 줄에 Test case의 수 T가 주어진다. 그리..

[BAEKJOON:1475] 방 번호

[BAEKJOON:1475] 방 번호 문제 다솜이는 은진이의 옆집에 새로 이사왔다. 다솜이는 자기 방 번호를 예쁜 플라스틱 숫자로 문에 붙이려고 한다. 다솜이의 옆집에서는 플라스틱 숫자를 한 세트로 판다. 한 세트에는 0번부터 9번까지 숫자가 하나씩 들어있다. 다솜이의 방 번호가 주어졌을 때, 필요한 세트의 개수의 최솟값을 출력하시오. (6은 9를 뒤집어서 이용할 수 있고, 9는 6을 뒤집어서 이용할 수 있다.) 입력 첫째 줄에 다솜이의 방 번호 N이 주어진다. N은 1,000,000보다 작거나 같은 자연수 또는 0이다. 출력 첫째 줄에 필요한 세트의 개수를 출력한다. 해결 한 세트 0 ~ 9, 6과 9는 뒤집어서 사용할 수 있다. 배열에 숫자카드를 하나씩 넣고 6과 9에대한 처리를 해주고 최대값으로 비..

[BAEKJOON:1924] 2007년

[BAEKJOON:1924] 2007년 문제 오늘은 2007년 1월 1일 월요일이다. 그렇다면 2007년 x월 y일은 무슨 요일일까? 이를 알아내는 프로그램을 작성하시오. 입력 첫째 줄에 빈 칸을 사이에 두고 x(1≤x≤12)와 y(1≤y≤31)이 주어진다. 참고로 2007년에는 1, 3, 5, 7, 8, 10, 12월은 31일까지, 4, 6, 9, 11월은 30일까지, 2월은 28일까지 있다. 출력 첫째 줄에 x월 y일이 무슨 요일인지에 따라 SUN, MON, TUE, WED, THU, FRI, SAT중 하나를 출력한다. 예제 입력 1 1 예제 출력 MON 해결 월의 date의 총 합(day)을 구하고, day를 입력한 일(y)만큼 더해준다. 총 일수를 7(일주일은 7일)로 나눈 나머지를 통해 해당 요..

article thumbnail
[BAEKJOON:10250] ACM 호텔

[BAEKJOON:10250] ACM 호텔 출처 : https://www.acmicpc.net/problem/10250 문제 ACM 호텔 매니저 지우는 손님이 도착하는 대로 빈 방을 배정하고 있다. 고객 설문조사에 따르면 손님들은 호텔 정문으로부터 걸어서 가장 짧은 거리에 있는 방을 선호한다고 한다. 여러분은 지우를 도와 줄 프로그램을 작성하고자 한다. 즉 설문조사 결과 대로 호텔 정문으로부터 걷는 거리가 가장 짧도록 방을 배정하는 프로그램을 작성하고자 한다. 문제를 단순화하기 위해서 호텔은 직사각형 모양이라고 가정하자. 각 층에 W 개의 방이 있는 H 층 건물이라고 가정하자 (1 ≤ H, W ≤ 99). 그리고 엘리베이터는 가장 왼쪽에 있다고 가정하자(그림 1 참고). 이런 형태의 호텔을 H × W 형..

# [BAEKJOON_1011] Fly me to the Alpha Centauri

[BAEKJOON_1011] Fly me to the Alpha Centauri 문제 우현이는 어린 시절, 지구 외의 다른 행성에서도 인류들이 살아갈 수 있는 미래가 오리라 믿었다. 그리고 그가 지구라는 세상에 발을 내려 놓은 지 23년이 지난 지금, 세계 최연소 ASNA 우주 비행사가 되어 새로운 세계에 발을 내려 놓는 영광의 순간을 기다리고 있다. 그가 탑승하게 될 우주선은 Alpha Centauri라는 새로운 인류의 보금자리를 개척하기 위한 대규모 생활 유지 시스템을 탑재하고 있기 때문에, 그 크기와 질량이 엄청난 이유로 최신기술력을 총 동원하여 개발한 공간이동 장치를 탑재하였다. 하지만 이 공간이동 장치는 이동 거리를 급격하게 늘릴 경우 기계에 심각한 결함이 발생하는 단점이 있어서, 이전 작동시기..

[BAEKJOON_1193] 분수찾기

[BAEKJOON_1193] 분수찾기 문제 무한히 큰 배열에 다음과 같이 분수들이 적혀있다. 1/1|1/2|1/3|1/4|1/5|…| |---|---|---|---|---|---| 2/1|2/2|2/3|2/4|…|…| 3/1|3/2|3/3|…|…|…| 4/1|4/2|…|…|…|…| 5/1|…|…|…|…|…| …|…|…|…|…|…| 이와 같이 나열된 분수들을 1/1 -> 1/2 -> 2/1 -> 3/1 -> 2/2 -> … 과 같은 지그재그 순서로 차례대로 1번, 2번, 3번, 4번, 5번, … 분수라고 하자. X가 주어졌을 때, X번째 분수를 구하는 프로그램을 작성하시오.. 입력 첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다. 출력 첫째 줄에 분수를 출력한다. 예제 입력 14 예제 출력 2..

[BAEKJOON:2292] 벌집

BAEKJOON:2292 벌집 문제 출처 : https://www.acmicpc.net/JudgeOnline/upload/201009/3(2).png 위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌을 때, 벌집의 중앙 1에서 N번 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나가는지(시작과 끝을 포함하여)를 계산하는 프로그램을 작성하시오. 예를 들면, 13까지는 3개, 58까지는 5개를 지난다. 입력 첫째 줄에 N(1 ≤ N ≤ 1,000,000,000)이 주어진다. 출력 입력으로 주어진 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나는지 출..