알고리즘 8

Python - set 자료형 / BOJ 25192

백준 25192 번 문제는 간단히, input을 확인하여, ENTER 이후 새로 들어온사람은 res 값을 +1 해주면 되는 중복 검사 문제이다. 아래 코드는 백준 25192번을 풀이하면서 처음 작성한 코드이다. n = int(input())res = 0user = []flag = Falsefor i in range(n): inpp = input() if inpp == "ENTER": flag = True user = [] elif flag and inpp not in user: res += 1 user.append(inpp) print(res)방문한 사람의 정보를 user 라는 리스트 자료형에 저장후 not in 구문을 이용하..

자료구조 - 큐 (Queue) 란? /BOJ 10845, 18258

지난 포스트 Stack에 이은 큐 (Queue) 자료구조에 대해 알아보자, 큐는 스택과 반대로, FIFO(First-In-First-Out), 후입 선출 LILO(Last-In-Last-Out) 규칙을 따른다. 예를 들어, 웨이팅 줄이 대표적이다. 큐를 이용하는 명령어는 크게 6가지가 있는데push X: 정수 X를 큐에 넣는다.size: 큐에 들어있는 값 개수를 출력한다.front: 큐의 가장 앞에 있는 값을 출력한다. back: 큐의 가장 뒤에 있는 값을 출력한다. empty: 큐가 비어있는지 판단한다.pop: 큐에서 가장 앞에 있는 값을 빼고, 그 값을 출력한다. C 기준으로 큐도 구현하는 방법이 크게 두가지 있는데,#include #include #include using namespace std;..

[백준] 12789번 도키도키 간식드리미

도키도키 간식드리미 - 실버 3문제인하대학교 학생회에서는 중간, 기말고사 때마다 시험 공부에 지친 학우들을 위해 간식을 나눠주는 간식 드리미 행사를 실시한다. 승환이는 시험 기간이 될 때마다 간식을 받을 생각에 두근두근 설레서 시험 공부에 집중을 못 한다. 이번 중간고사에서도 역시 승환이는 설레는 가슴을 안고 간식을 받기 위해 미리 공지된 장소에 시간 맞춰 도착했다. 그런데 이게 무슨 날벼락인가! 그 곳에는 이미 모든 학생들이 모여있었고, 승환이는 마지막 번호표를 받게 되었다. 설상가상으로 몇몇 양심에 털이 난 학생들이 새치기를 거듭한 끝에 대기열의 순서마저 엉망이 되고 말았다. 간식을 나눠주고 있던 인규는 학우들의 터져 나오는 불만에 번호표 순서로만 간식을 줄 수 있다고 말했다.그제야 학생들이 순서대로..

알고리즘/BOJ 2026.02.08

자료구조 - 스택 (Stack) 이란? /BOJ 10828, 28278

자료구조를 배우게 되면 가장 먼저 배우는 스택, 우리가 일상 속 많이 들어보는 용어이기도 하다. 흔히 스택을 쌓는다 라고 표현을 하는데, 쌓는다 라는 동사는 스택의 성질에서 유래되었다. 스택은 선입후출 FILO(First-In-Last-Out), 후입 선출 LIFO(Last-In-First-Out) 규칙을 따른다. 쉽게 설명하면, 마지막에 들어간 것이 처음으로 나오는 것으로, 젠가통에 젠가를 하나씩 꺼낼때 가장 마지막(위)에 있는 젠가 먼저 꺼내는 것과 같은 로직이다. 스택을 사용하는 명령어는 크게 5가지가 있다push(n) : stack의 최상단 (마지막)에 값을 넣는다.pop() : stack의 최상단 값을 꺼내고 반환한다.peek(), top() : stack 최상단 값을 반환한다. (pop에서 꺼..

[백준] 18870번 좌표 압축

좌표압축 - 실버 2문제수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다.Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표 Xj의 개수와 같아야 한다.X1, X2, ..., XN에 좌표 압축을 적용한 결과 X'1, X'2, ..., X'N를 출력해보자.입력첫째 줄에 N이 주어진다.둘째 줄에는 공백 한 칸으로 구분된 X1, X2, ..., XN이 주어진다.출력첫째 줄에 X'1, X'2, ..., X'N을 공백 한 칸으로 구분해서 출력한다.제한1 ≤ N ≤ 1,000,000-109 ≤ Xi ≤ 109예제 입력 152 4 -10 4 -9예제 출력 12 3 0 3 1예제 입력 261000 999 1000 999 1000 999예제..

알고리즘/BOJ 2026.02.05

[백준] 1316번 그룹 단어 체커

그룹 단어 체커 - 실버 5문제그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때문에 그룹 단어이지만, aabbbccb는 b가 떨어져서 나타나기 때문에 그룹 단어가 아니다.단어 N개를 입력으로 받아 그룹 단어의 개수를 출력하는 프로그램을 작성하시오.입력첫째 줄에 단어의 개수 N이 들어온다. N은 100보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 단어가 들어온다. 단어는 알파벳 소문자로만 되어있고 중복되지 않으며, 길이는 최대 100이다.출력첫째 줄에 그룹 단어의 개수를 출력한다.예제 입력 13happynewyear예제 출력 1..

알고리즘/BOJ 2026.02.04

[백준] 2606번 바이러스

바이러스 - 실버 3문제신종 바이러스인 웜 바이러스는 네트워크를 통해 전파된다. 한 컴퓨터가 웜 바이러스에 걸리면 그 컴퓨터와 네트워크 상에서 연결되어 있는 모든 컴퓨터는 웜 바이러스에 걸리게 된다. 예를 들어 7대의 컴퓨터가 과 같이 네트워크 상에서 연결되어 있다고 하자. 1번 컴퓨터가 웜 바이러스에 걸리면 웜 바이러스는 2번과 5번 컴퓨터를 거쳐 3번과 6번 컴퓨터까지 전파되어 2, 3, 5, 6 네 대의 컴퓨터는 웜 바이러스에 걸리게 된다. 하지만 4번과 7번 컴퓨터는 1번 컴퓨터와 네트워크상에서 연결되어 있지 않기 때문에 영향을 받지 않는다. 어느 날 1번 컴퓨터가 웜 바이러스에 걸렸다. 컴퓨터의 수와 네트워크 상에서 서로 연결되어 있는 정보가 주어질 때, 1번 컴퓨터를 통해 웜 바이러스에 걸리게..

알고리즘/BOJ 2026.01.29

[백준] 1016번 제곱 ㄴㄴ 수

제곱 ㄴㄴ 수 - 골드 1문제어떤 정수 X가 1보다 큰 제곱수로 나누어 떨어지지 않을 때, 그 수를 제곱ㄴㄴ수라고 한다. 제곱수는 정수의 제곱이다. min과 max가 주어지면, min보다 크거나 같고, max보다 작거나 같은 제곱ㄴㄴ수가 몇 개 있는지 출력한다.입력첫째 줄에 두 정수 min과 max가 주어진다.출력첫째 줄에 min보다 크거나 같고, max보다 작거나 같은 제곱ㄴㄴ수의 개수를 출력한다.제한1 ≤ min ≤ 1,000,000,000,000min ≤ max ≤ min + 1,000,000이 문제는 소수판별 문제가 비슷한 계열의 문제이다. 일단 제한부분을 못면 브루트포스 탐색 방식 절대 불가능한 문제임을 알 수 있다. 에라토스테네스 체 공식을 응용하여 소수 대신 제곱수의 배수를 판별해내는 방식으..

알고리즘/BOJ 2026.01.29