백준 문제풀이/브론즈2

백준 문제풀이/브론즈2

백준 2309번 - 일곱 난쟁이 (브루트포스)

https://www.acmicpc.net/problem/2309 2309번: 일곱 난쟁이 아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다. www.acmicpc.net 백준 기초 알고리즘 강의를 수강하며 같이 푼 문제이다. 경우의 수가 9C7 = 9C2 = 36이다. 매우 적은 수라 그냥 다 해보기로 했다. (이게 브루트포스) 7개 다 찾는 것보단 그냥 해당 안되는 2개를 찾는게 빠르겠다 싶었다. #include #include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(NULL); co..

백준 문제풀이/브론즈2

백준 2798번 - 블랙잭

https://www.acmicpc.net/problem/2798 2798번: 블랙잭 첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장 www.acmicpc.net 약간 확통의 조합 느낌이 물씬 난다. 서로 다른 3개를 골라야하니, 중복되서는 안됨. 이건 뭐.. 그냥 다 해봐야한다. 경우의 수 다 따져보고 그 중에 M값에 작으면서 가장 가까운 거 출력하면 되겠다. #include #include #include using namespace std; int main() { ios::sync_with_stdio(false); ci..

백준 문제풀이/브론즈2

백준 2231번 - 분해합

https://www.acmicpc.net/problem/2231 2231번: 분해합 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 www.acmicpc.net 사고과정) 심플하다. 그냥 해당 수 + 각 자리의 숫자 더하면 된다. 주의할 점이라면 반복문에서 선언한 i를 식으로 활용하면 i 값이 변경되서 반복문이 이상해지므로 index라는 새로운 변수를 선언해주었다. #include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(NULL); cout..

백준 문제풀이/브론즈2

백준 2292번 - 벌집

https://www.acmicpc.net/problem/2292 2292번: 벌집 위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌 www.acmicpc.net 우선 나의 사고는 이랬다. 해당 수를 입력받고 현재 1, 2, 8 , 20이 경계이므로 해당 수 보다 커질 시점에 해당 인덱스를 출력시키면 되었다. #include #include using namespace std; int main() { std::cin.tie(NULL); std::ios::sync_with_stdio(false); int n; cin >> n; int limit = (int)10000..

백준 문제풀이/브론즈2

백준 10809번 - 알파벳 찾기

https://www.acmicpc.net/problem/10809 10809번: 알파벳 찾기 각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출 www.acmicpc.net #include #include #include using namespace std; int main() { std::cin.tie(NULL); std::ios::sync_with_stdio(false); string input; cin >> input; vector v(26, -1); for (int i = 0; i < input.length(); i++) { int index = ..

백준 문제풀이/브론즈2

백준 1173 - 운동

https://www.acmicpc.net/problem/1173 1173번: 운동 첫째 줄에 다섯 정수 N, m, M, T, R이 주어진다. www.acmicpc.net 사고과정) 결국 고려해야할 지점은 두 가지다 1) 운동을 할 시, 최대값(경계값)을 초과할 수 없다. 초과하면 무조건 휴식을 해서 감소시켜야한다. 2) 휴식을 통한 감소값이 너무 크면, 최소값(경계값) 아래로 내려갈 수 없게 설정해줘야한다. 즉, 심박수는 최소값 아래로 내려갈 수 없게 설정해줘야한다. #include using namespace std; int main() { int N, m, M, T, R; cin >> N >> m >> M >> T >> R; int exercise = 0; int rest = 0; int sum =..

백준 문제풀이/브론즈2

백준 1264번 - 모음의 개수

https://www.acmicpc.net/problem/1264 1264번: 모음의 개수 입력은 여러 개의 테스트 케이스로 이루어져 있으며, 각 줄마다 영어 대소문자, ',', '.', '!', '?', 공백으로 이루어진 문장이 주어진다. 각 줄은 최대 255글자로 이루어져 있다. 입력의 끝에는 한 줄 www.acmicpc.net 사고과정) 1. 우선 반복문을 이용해 계속 문자열을 입력받고, 반복문의 조건에 != '#'을 하면 되겠다. 2. 저 모음들을 어떻게 처리할 것인가. 첫번째 방법은 저것들 배열에 넣고 주어진 문자열 vs 모음 배열 비교하기 두번째 방법은 그냥 조건문 이용해서 하기. 이번엔 갯수가 10개라 그냥 조건문 썼음. 주의) 문자열을 공백까지 받아야하기에, getline함수를 사용했다. ..

백준 문제풀이/브론즈2

백준 1152번 - 단어의 갯수

https://www.acmicpc.net/problem/1152 1152번: 단어의 개수 첫 줄에 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 공백 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 문자열 www.acmicpc.net 사고 과정) 1. 문자열의 길이의 범위가 1,000,000 이라서 그냥 string으로 받았음. 2. 단어의 구분은 공백이기에, 공백을 기점으로 생각해야겠다. 3. 공백이 맨 처음이나 끝에 있으면 특수 경우네. *교훈) 공백도 문자열로 포함해서 받아야하는데, 단순히 cin>>으로 받으면, 공백을 만나면 끝이 되버림. 그럴때, std::getline()함수를 사용해야한다. #include #i..

void_melody
'백준 문제풀이/브론즈2' 카테고리의 글 목록