본문 바로가기
728x90

ALGORITHM/C++ - 백준28

[백준 9461] 파도반 수열 문제 https://www.acmicpc.net/problem/9461 9461번: 파도반 수열 오른쪽 그림과 같이 삼각형이 나선 모양으로 놓여져 있다. 첫 삼각형은 정삼각형으로 변의 길이는 1이다. 그 다음에는 다음과 같은 과정으로 정삼각형을 계속 추가한다. 나선에서 가장 긴 변의 www.acmicpc.net 문제 분석 우측에 있는 그림처럼 생긴 그림이 있고, 입력 받은 수의 번째에 생성된 삼각형의 크기가 몇인지 출력하는 문제이다. 알고리즘 설계 우선 테스트 케이스의 개수를 담을 t와 테스트 케이스를 담을 n을 int형으로 선언한다. n이 100 이하로 나오기에 longlong을 가지고 있을 vector을 하나 만들고 크기를 101로 만들어준다. 이후 1, 2, 3번 인덱스는 1로 초기화 시켜준다. 이.. 2023. 11. 30.
[백준 1654] 랜선 자르기 문제 https://www.acmicpc.net/problem/1654 1654번: 랜선 자르기 첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그 www.acmicpc.net 문제 분석 잘라서 가져야하는 랜선의 개수가 주어지고, 가지고 있는 랜선의 길이가 주어진다. 랜선을 잘라 개수를 맞추는데 최대한 길게 남겨두고, 또 같은 길이로 자른다면 몇 m로 잘라야 하는지 구하는 문제이다. 알고리즘 설계 우선 얻어야하는 랜선의 개수를 정수형 변수 n으로, 랜선들의 길이를 담을 vector vec을 전역변수로 선언한다. main함수에서 몇개의 랜.. 2023. 11. 24.
[백준 2805] 나무 자르기 문제 https://www.acmicpc.net/problem/2805 2805번: 나무 자르기 첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M보 www.acmicpc.net 문제 분석 상근이가 필요한 나무의 조각의 크기와 나무조각들이 주어지고 나무조각을 얼만큼 남기고 짤라야하는지 구하는 문제이다. 다만 최대한 많이 남기고 잘라야한다. 알고리즘 설계 long long을 가진 vector tree를 선언한다. 또 long long n과 m, input을 선언한다. n은 나무의 개수, m은 얻어야하는 나무의 크기, 나무들을 입력.. 2023. 11. 22.
[백준 5397] 키로거 문제 https://www.acmicpc.net/problem/5397 5397번: 키로거 첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한줄로 이루어져 있고, 강산이가 입력한 순서대로 길이가 L인 문자열이 주어진다. (1 ≤ L ≤ 1,000,000) 강산이가 백스페이스를 입 www.acmicpc.net 문제 분석 문자열이 주어지고, 그 안에 , -들이 섞여 있다. 커서가 존재하고, ''면 왼쪽으로 움직인다. '-'가 입려되면 바로 앞에 있는 값을 지운다. 하나의 커서가 있다고 생각하면 편하다. 알고리즘 설계 입력받을 문자열 str과 몇개의 문자열을 받을지 알려줄 정수형 변수 num을 선언한다. num을 입력 받고 그 수 만큼 반복문을 돌린다. 반복문 안에서 char 인수로 가지는 연.. 2023. 11. 14.
[백준 1920] 수 찾기 문제 https://www.acmicpc.net/problem/1920 1920번: 수 찾기 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들 www.acmicpc.net 문제 분석 두가지의 변수 집합이 주어지고, 첫번째 집합에 두번째 집합에 해당하는 변수가 존재한다면 1을, 존재하지 않는다면 0을 출력한다. 알고리즘 설계 정수형 변수 n, m, input, num을 선언하고, int형을 가진 vector v1을 선언해준다 . n은 첫번째 집합의 개수, m은 두번째 집합의 개수, input은 반복문을 돌며 입력 .. 2023. 11. 13.
[백준 25192] 인사성 밝은 곰곰이 문제 https://www.acmicpc.net/problem/25192 25192번: 인사성 밝은 곰곰이 첫번째 새로운 사람이 들어온 뒤 pjshwa, chansol, chogahui05은 모두 곰곰티콘으로 인사했다. 두번째 새로운 사람이 들어온 뒤 pjshwa와 chansol은 다시 곰곰티콘으로 인사했다. www.acmicpc.net 문제 분석 우선 몇 가지의 입력이 있을지 입력 받고, 그 이후 문자열이 들어온다. 문자열이 이전에 들어오지 않은 문자열이라면 값을 하나 올린다. 다만 'Enter'가 들어오면 전에 입력 받은 값들이 초기화 된다. 그렇게 올린 값을 출력하는 문제이다. 알고리즘 설계 우선 입력 받을 값과, 출력할 값을 담을 정수형 변수, 입력 받고 확인할 문자열, 앞에서 입력 받은 문자열인.. 2023. 11. 13.
[백준 11004] K번째 수 문제 https://www.acmicpc.net/problem/11004 11004번: K번째 수 수 N개 A1, A2, ..., AN이 주어진다. A를 오름차순 정렬했을 때, 앞에서부터 K번째 있는 수를 구하는 프로그램을 작성하시오. www.acmicpc.net 문제 분석 입력 받을 수의 개수와 몇 번째에 있는 수를 출력할지를 입력받고, 그 수를 오름차순으로 정렬한 후 입력받은 수의 번째에 있는 수를 출력하면 된다. 알고리즘 설계 우선 몇 가지 수를 받을지, 몇 번째 수를 출력할지, 수를 입력 받을 정수형 변수, int가 들어가는 vector를 하나 만들어준다. 이후 몇 가지 수를 받을지와 몇 번째 수를 출력할지 입력 받고 몇 가지 수를 받을지 입력 받은 수 대로 반복문을 돌려준다. 반복문 내부에서 입.. 2023. 11. 13.
[백준 10825] 국영수 문제 https://www.acmicpc.net/problem/10825 10825번: 국영수 첫째 줄에 도현이네 반의 학생의 수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 한 줄에 하나씩 각 학생의 이름, 국어, 영어, 수학 점수가 공백으로 구분해 주어진다. 점수는 1보다 크거나 같고, 1 www.acmicpc.net 문제 분석 학생의 이름과 국어, 수학, 영어 과목에 따라 정렬한다. 국어는 감소, 영어는 증가, 수학은 감소, 이름은 사전순으로 정렬해준다. 알고리즘 설계 이름과 국영수 과목의 점수를 입력 받고, 모두 tuple을 가지고 있는 vector에 넣어준다. 이후 sort를 해주는데 compare을 해주어 직접 설정해준다. 국어를 우선으로 감소 순으로, 이후 영어는 증가순, 수.. 2023. 11. 9.
[백준 7795] 먹을 것인가 먹힐 것인가 문제 https://www.acmicpc.net/problem/7795 7795번: 먹을 것인가 먹힐 것인가 심해에는 두 종류의 생명체 A와 B가 존재한다. A는 B를 먹는다. A는 자기보다 크기가 작은 먹이만 먹을 수 있다. 예를 들어, A의 크기가 {8, 1, 7, 3, 1}이고, B의 크기가 {3, 6, 1}인 경우에 A가 B를 먹을 www.acmicpc.net 문제 분석 두개의 배열이 들어오고, 한쪽을 A, 다른 한쪽을 B라고 생각한다. A의 값을 하나하나 돌며 B의 값보다 크다면 선이 이어진다. 이렇게 이어진 선이 몇가지인지 출력하는 문제이다. 알고리즘 설계 전체적으로 몇번 회전할지, A의 값 회전, B의 값 회전, 안에서 입력 받을 값, 출력값을 담을 정수형 변수 하나를 선언한다. 이후 전체적.. 2023. 11. 9.
[백준 10816] 숫자 카드 2 문제 https://www.acmicpc.net/problem/10816 10816번: 숫자 카드 2 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,0 www.acmicpc.net 문제 분석 우선 가지고 있는 카드의 개수와 그 카드의 숫자가 정해지고, 또 특정 수가 들어오고 그 카드가 이전에 입력 받은 카드에서 몇개 존재하는지 확인하는 문제이다. 알고리즘 설계 우선 몇번 돌아야하는지 알고 있는 변수와, 입력 받을 정수형 변수 2개와 입력 받은 값을 모두 넣어줄 vector를 하나 선언해준다. 몇번 반복할지 입력 받고 안에서 입력을 한.. 2023. 11. 9.
[백준 11399] ATM 문제 https://www.acmicpc.net/problem/11399 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net 문제 분석 입력 받은 수의 사람들이 현금을 인출하는데 걸리는 시간을 입력 받는다. 만약 { 4, 6, 2, 8, 1 }이 입력 받게 되면 첫번째 사람은 4분 후 현금을 뽑을 수 있고, 두번째 사람은 앞사람도 기다려야 하기에 10분, 그렇게 12, 20, 21 분의 시간을 기다리게 된다. 그럼 모두가 기다린 시간을 총 합치면 67분을 기다리게 된다. 그럼 { 1, 2, 4, 6, 8 } 순으로 인출한다면? 1, 3, 7, .. 2023. 10. 26.
[백준 16953] A → B 문제 https://www.acmicpc.net/problem/16953 16953번: A → B 첫째 줄에 A, B (1 ≤ A < B ≤ 109)가 주어진다. www.acmicpc.net 문제 분석 A에 2를 곱하거나, 1을 가장 오른쪽에 추가하여 수 B를 만드는 간단한 문제이다. 알고리즘 설계 입력을 받고 queue에 넣어 queue가 비어있지 않을때 작동되는 반복문을 만든다. queue앞에 있는 수에 2을 곱하거나 맨오른쪽에 1을 두는 코드를 만들고 B를 넘었다면 queue에 넣어주지 않는다. 만약 B에 도달했다면 얼마만에 도착 했는지 출력하고, 도착하지 못 하였다면 -1을 출력한다. 유의점 입력되는 값이 십억단위까지 올라가기에 int가 아닌 long long을 사용한다. vector대신 map을.. 2023. 10. 19.
728x90