본문 바로가기

백준/C++

(132)
[C++] 백준 1654번 - 랜선 자르기 문제 1654번 https://www.acmicpc.net/problem/1654 1654번: 랜선 자르기 첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그 www.acmicpc.net '최대' 이런 단어가 있는 거 보니 이분 탐색으로 풀면 될 것 같다. 입력된 길이 중에서 가장 긴 길이를 maxx에 넣어준다. 그리고 start는 1, end는 가장 긴 길이로 초기화해준다. while문을 이용해 start> N >> K; long long maxx = 0; int a; for (int i = 0; i > ..
[C++] 백준 7795번 - 먹을 것인가 먹힐 것인가 문제 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 이 문제는 이진탐색으로 풀었다. 일단 테스트 케이스가 몇개인지 입력받아 반복문으로 묶어준다. vector A,B를 N,M크기만큼 만들어(배열처럼 입력받으려고) 입력받아주고, 해당 벡터들을 정렬(이진탐색을 하기위한 필수조건)한다. A의 크기인 N만큼 반복하여 N이 먹을 수 있는 숫자가 있는지 탐색한다. 여기서 while문의 조건은 ..
[C++] 백준 1225번 - 이상한 곱셈 문제 1225번 https://www.acmicpc.net/problem/1225 1225번: 이상한 곱셈 첫째 줄에 A와 B가 주어진다. 주어지는 두 수는 모두 10,000자리를 넘지 않는 음이 아닌 정수이다. 수가 0인 경우에는 0만 주어지며, 그 외의 경우 수는 0으로 시작하지 않는다. www.acmicpc.net 이 문제는 자릿수마다 곱해주고 다 더해줘야하기 때문에 입력값을 문자열로 받아준다. 그리고 이중 for문을 이용하여 각 자리수를 곱해주고 result변수에 더해주는데, 여기서 A,B는 문자열이므로 '0'를 빼서 곱해주고 result에 더한다. string에서 '0'을 빼면 int형이 된다. 그렇게 반복문을 다 돌면 result값을 출력해주면 끝난다. #include #include usin..
[C++] 백준 1264번 - 모음의 개수 화요일 밤부터 몸 상태가 말이 아니다... 몸살이랑 열은 괜찮아졌지만, 배가 살짝살짝 거슬리게 아팠던 증상이 심해져서 배까지 너무 아프다... 얼른 나았으면 좋겠다... 문제 1264번 https://www.acmicpc.net/problem/1264 1264번: 모음의 개수 입력은 여러 개의 테스트 케이스로 이루어져 있으며, 각 줄마다 영어 대소문자, ',', '.', '!', '?', 공백으로 이루어진 문장이 주어진다. 각 줄은 최대 255글자로 이루어져 있다. 입력의 끝에는 한 줄 www.acmicpc.net 공백이 있으니까 getline으로 입력받고, 대문자인 것들을 다 소문자로 바꿔준다. 그리고 aeiou 중 하나라면 모음의 개수를 카운트해준다. 만약 #이 하나 들어왔다면 반복문을 빠져나와주면 ..
[C++] 백준 7567번 - 그릇 으으... 이틀동안 몸살때문에 앓다가 이제야 살 것 같다... 몸이랑 머리가 너무 아프고 열도 너무 심하게 났다. (약먹고 계속 자면서 푹 쉬니까 이제야 살 것 같아) 문제 7567번 https://www.acmicpc.net/problem/7567 7567번: 그릇 그릇을 바닥에 놓았을 때 그 높이는 10cm 이다. 그런데 두 개의 그릇을 같은 방향으로 포개면 그 높이는 5cm만 증가된다. 만일 그릇이 서로 반대방향으로 쌓이면 높이는 그릇만큼, 즉 10cm 늘어난다. www.acmicpc.net 높이(height)를 10, now를 비교할 전 접시(dish[i-1])로 초기화해준다. 높이를 10으로 초기화해줬기 때문에 인덱스 i는 1부터 시작해준다. 그리고 now와 비교할 다음 접시(dish[i])가 ..
[C++] 백준 4999번 - 아! 문제 4999번 https://www.acmicpc.net/problem/4999 4999번: 아! 입력은 두 줄로 이루어져 있다. 첫째 줄은 재환이가 가장 길게 낼 수 있는 "aaah"이다. 둘째 줄은 의사가 듣기를 원하는 "aah"이다. 두 문자열은 모두 a와 h로만 이루어져 있다. a의 개수는 0보다 크거 www.acmicpc.net 이 문제는 재환이가 가장 길게 낼 수 있는 소리가 의사가 듣기를 원하는 소리보다 작으면 no를 출력하고, 아니면 go를 출력하면 되는 문제이다. #include #include using namespace std; int main() { string j, d; cin >> j >> d; if (j.length() < d.length()) { cout
[C++] 백준 2935번 - 소음 문제 2935번 https://www.acmicpc.net/problem/2935 2935번: 소음 수업 시간에 떠드는 두 학생이 있다. 두 학생은 수업에 집중하는 대신에 글로벌 경제 위기에 대해서 토론하고 있었다. 토론이 점점 과열되면서 두 학생은 목소리를 높였고, 결국 선생님은 크게 www.acmicpc.net *일 때, 1을 먼저 출력해준다음 입력된 값들의 길이를 합한 후 앞자리 2씩 빼주어 0의 개수를 알아낸 후 그 길이만큼 0을 출력해준다. +일 때, 입력된 값들의 길이가 같으면 처음에 2를 출력해준다음 나머지 길이만큼 0을 출력해준다. 만약, 입력된 값들의 길이가 다르면 가장 긴 길이부터 시작하여 차례대로 비교하며 각 입력값의 길이와 같을 때 1을 출력해주고 나머지는 0을 출력해준다. #inc..
[C++] 백준 2744번 - 대소문자 바꾸기 문제 2744번 https://www.acmicpc.net/problem/2744 2744번: 대소문자 바꾸기 영어 소문자와 대문자로 이루어진 단어를 입력받은 뒤, 대문자는 소문자로, 소문자는 대문자로 바꾸어 출력하는 프로그램을 작성하시오. www.acmicpc.net 'A'의 아스키코드 값은 65, 'a'의 아스키코드 값은 97이므로 만약 대문자(65이상 90이하)면 32를 더해주고 그 이외의 값이면 32를 빼준다. #include #include using namespace std; //'A'의 아스키코드 값: 65, 'a'의 아스키코드 값: 97 int main() { string input; cin >> input; for (int i = 0; i < input.length(); i++) { if..