목록대학교/Algorithm (100)
SW

0. 제목 백준 1874 스택 수열 BOJ 1874 스택 수열 Python 1874 스택 수열 1. 문제 https://www.acmicpc.net/problem/1874 1874번: 스택 수열 1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다. www.acmicpc.net 2. 풀이 스택에 원소를 삽입할 때는, 단순히 특정 수에 도달할 때까지 삽입하면 된다. 스택에서 원소를 연달아 빼낼 때 내림차순을 유지할 수 있는지 확인한다. 3. 코드 1 2 3 4 5 6 7 8 9 10 11..

0. 제목 백준 1302 베스트 셀러 BOJ 1302 베스트 셀러 Python 1302 베스트 셀러 1. 문제 https://www.acmicpc.net/problem/1302 1302번: 베스트셀러 첫째 줄에 오늘 하루 동안 팔린 책의 개수 N이 주어진다. 이 값은 1,000보다 작거나 같은 자연수이다. 둘째부터 N개의 줄에 책의 제목이 입력으로 들어온다. 책의 제목의 길이는 50보다 작거나 같고 www.acmicpc.net 2. 풀이 등장 횟수를 계산할 때는 Dictionary 자료형을 이용하면 효과적이다. books라는 Dictionary를 선언하고, book을 입력 갯수만큼 입력받는다. 입력받으면서 딕셔너리에 저장하고 갯수를 1 증가시킨다. Dictionary에 이미 있는 이름이면 1 증가시켜주고..

0. 제목 백준 1236 성 지키기 BOJ 1236 성 지키기 Python 1236 성 지키기 1. 문제 https://www.acmicpc.net/problem/1236 1236번: 성 지키기 첫째 줄에 성의 세로 크기 N과 가로 크기 M이 주어진다. N과 M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 성의 상태가 주어진다. 성의 상태는 .은 빈칸, X는 경비원이 있는 칸이다 www.acmicpc.net 2. 풀이 2차원 배열로 생각하여 풀면 되는 문제이다. 가장 먼저 n행, m열의 2차원 배열에 모두 0을 넣는다. 2차원 배열을 탐색하면서 X가 있는 곳에 1로 갱신한다. 그 후, 행과 열 각각 탐색하며 원소가 0인 경우 각각의 숫자(필요한 경비원 수)에 1씩 더한다. 행에서 필요한..

0. 제목 백준 1668 트로피 진열 BOJ 1668 트로피 진열 Python 1668 트로피 진열 1. 문제 https://www.acmicpc.net/problem/1668 1668번: 트로피 진열 민식이는 “오민식”이라는 팀이름으로 수없이 많은 로봇대회를 우승했다. 따라서 민식이의 집에는 트로피가 많다. 민식이는 트로피를 어떤 선반 위에 올려놨다. 이 선반은 민식이의 방문을 열 www.acmicpc.net 2. 풀이 첫번째 원소부터 탐색을 시작한다. 탐색을 하다가 현재 위치의 원소보다 큰 원소가 나오면 보이는 갯수를 1 증가시킨다. 최대값을 큰 원소로 갱신시킨다. 오른쪽에서 봤을 때의 개수를 알기 위해서는 reverse()를 이용하여 배열을 역순으로 만든 후 함수에 인자로 넣어주면 된다. 3. 코드..

0. 제목 백준 1568 새 BOJ 1568 새 Python 1568 새 1. 문제 https://www.acmicpc.net/problem/1568 1568번: 새 N마리의 새가 나무에 앉아있고, 자연수를 배우기 원한다. 새들은 1부터 모든 자연수를 오름차순으로 노래한다. 어떤 숫자 K를 노래할 때, K마리의 새가 나무에서 하늘을 향해 날아간다. 만약, 현�� www.acmicpc.net 2. 풀이 반복 조건을 구한 후, 반복문 내에서 조건 검사를 하면된다. 3. 코드 1 2 3 4 5 6 7 8 9 10 11 12 n = int(input()) cnt = 0 k = 1 while n != 0: if(k > n): k = 1 n -= k k += 1 cnt += 1 print(cnt)

0. 제목 백준 1543 문서 검색 BOJ 1543 문서 검색 Python 1543 문서 검색 1. 문제 https://www.acmicpc.net/problem/1543 1543번: 문서 검색 세준이는 영어로만 이루어진 어떤 문서를 검색하는 함수를 만들려고 한다. 이 함수는 어떤 단어가 총 몇 번 등장하는지 세려고 한다. 그러나, 세준이의 함수는 중복되어 세는 것은 빼고 세야 한� www.acmicpc.net 2. 풀이 문자열 비교 중 단어가 문서의 범위를 넘어가면 안되므로 문서의 길이에서 시작인덱스를 뺀 값이 단어의 길이보다 크거나 같은 경우 반복문을 수행한다. 검사시작 index에서부터 단어의 길이만큼 문자열과 단어가 같으면 일치개수를 1증가시키고 검사 index를 단어길이만큼 증가시킨다. 단어가 ..

0. 제목 백준 2798 블랙잭 BOJ 2798 블랙잭 C++ 2798 블랙잭 1. 문제 https://www.acmicpc.net/problem/2798 2798번: 블랙잭 문제 카지노에서 제일 인기 있는 게임 블랙잭의 규칙은 상당히 쉽다. 카드의 합이 21을 넘지 않는 한도 내에서, 카드의 합을 최대한 크게 만드는 게임이다. 블랙잭은 카지노마다 다양한 규정이 있다. 한국 최고의 블랙잭 고수 김정인은 새로운 블랙잭 규칙을 만들어 상근, 창영이와 게임하려고 한다. 김정인 버전의 블랙잭에서 각 카드에는 양의 정수가 쓰여 있다. 그 다음, 딜러는 N장의 카드를 모두 숫자가 보이도록 바닥에 놓는다. 그런 후에 딜러는 숫자 M을 크게 www.acmicpc.net 2. 풀이 3중 for문을 사용하면 된다. 조건문..

0. 제목 백준 11004 K번째 수 BOJ 11004 K번째 수 C++ 11004 K번째 수 1. 문제 https://www.acmicpc.net/problem/11004 11004번: K번째 수 수 N개 A1, A2, ..., AN이 주어진다. A를 오름차순 정렬했을 때, 앞에서부터 K번째 있는 수를 구하는 프로그램을 작성하시오. www.acmicpc.net 2. 풀이 STL의 sort는 quick sort와 같다. 3. 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 #include #include using namespace std; int N, K; int arr[5000001]; int main(int argc, const char * ar..

0. 제목 백준 11652 카드 BOJ 11652 카드 C++ 11652 카드 1. 문제 https://www.acmicpc.net/problem/11652 11652번: 카드 준규는 숫자 카드 N장을 가지고 있다. 숫자 카드에는 정수가 하나 적혀있는데, 적혀있는 수는 -262보다 크거나 같고, 262보다 작거나 같다. 준규가 가지고 있는 카드가 주어졌을 때, 가장 많이 가지고 있는 정수를 구하는 프로그램을 작성하시오. 만약, 가장 많이 가지고 있는 정수가 여러 가지라면, 작은 것을 출력한다. www.acmicpc.net 2. 풀이 적혀있는 수의 범위가 크기 때문에 자료형을 long long으로 사용하는 것이 핵심이다. 처음에 배열을 입력받은 후, sort로 정렬을 한다. 그 후 가장 앞의 원소부터 다음..

0. 제목 백준 10989 수 정렬하기 3 BOJ 10989 수 정렬하기 3 C++ 10989 수 정렬하기 3 1. 문제 https://www.acmicpc.net/problem/10989 10989번: 수 정렬하기 3 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. www.acmicpc.net 2. 풀이 계수 정렬(Counting Sort)를 사용하는 문제이다. 버블 소트와 같은 것을 사용하면 시간 초과가 난다. 계수 정렬은 수의 범위가 작을 때 사용하기에 적합하다. 3. 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 ..