https://www.acmicpc.net/problem/1978 1978번: 소수 찾기 첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다. www.acmicpc.net 사고과정) 우선 소수라는 개념 자체가 '1과 자기 자신만으로 나뉘어지는 수' 라고 학교 다닐 때 배웠다. 그렇다면 그 이외의 숫자들로 나뉘어지면, 그건 소수가 아닐 것이다. 를 활용했다. 예외사항으로 1은 소수가 아니고. #include using namespace std; int main() { int N; cin >> N; int wrong = 0; for (int i = 0; i > num; if (num == 1..
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 =..
https://www.acmicpc.net/problem/2506 2506번: 점수계산 OX 문제는 맞거나 틀린 두 경우의 답을 가지는 문제를 말한다. 여러 개의 OX 문제로 만들어진 시험에서 연속적으로 답을 맞히는 경우에는 가산점을 주기 위해서 다음과 같이 점수 계산을 하기로 www.acmicpc.net #include using namespace std; int main() { int N; cin >> N; int* arr = new int[N]; for (int i = 0; i > arr[i]; int count = 0; int sum = 0; for (int i = 0; i < N; i++) { if (arr[i] == 1) { sum = sum + (count + 1)..
https://www.acmicpc.net/problem/1246 1246번: 온라인 판매 첫째 줄에 정수 N(1 ≤ N ≤ 1,000)과 M(1 ≤ M ≤ 1,000)이 입력된다. 둘째 줄부터 M+1번째 줄까지 i+1번째 줄에는 Pi(1 ≤ Pi ≤ 1,000,000)가 입력된다. www.acmicpc.net 사고과정) (가격금액 * 구매 가능한 사람수 )가 가장 큰 값을 찾으면 된다. 입력받은 가격들 중 가장 큰 값을 max_element로 찾고, i = 1 ~ max_element까지 반복하면서 구매가능한 사람수를 조건문으로 걸고 곱한 합을 비교하면 된다. 예외사항으로, 사람수가 계란수보다 많으면, 예를 들어 가능한 사람수는 5명이라 count가 5는 되지만, 계란 수는 4라 오류가 난다. 그렇기 ..
https://www.acmicpc.net/problem/1120 1120번: 문자열 길이가 N으로 같은 문자열 X와 Y가 있을 때, 두 문자열 X와 Y의 차이는 X[i] ≠ Y[i]인 i의 개수이다. 예를 들어, X=”jimin”, Y=”minji”이면, 둘의 차이는 4이다. 두 문자열 A와 B가 주어진다. 이때, A의 www.acmicpc.net 사고과정) 1. 배열의 갯수 차이만큼 A배열을 한칸씩 밀어가면서 비교한다. 2. 비교하는 과정 한 번 거칠 때마다 총 몇 개가 겹치지 않았는지 파악. 가장 최소 수 구하라는 건 결국엔 빈칸을 채워넣는 곳은 그냥 B배열과 같다라고 가정하고 하면 된다. 그림그려가면서했다.. #include #include using namespace std; int main()..
https://www.acmicpc.net/problem/1065 1065번: 한수 어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 www.acmicpc.net 사고과정) 한자리랑 두자리 수는 생각해보니 다 한수이다. 그러면 결국은 세자리 수일 때인데, (100자리 - 10자리) == (10자리 - 1자리)를 확인해보면 된다. #include #include using namespace std; int main() { int N; cin >> N; int count = 0; for (int i = 1; i
https://www.acmicpc.net/problem/1439 1439번: 뒤집기 다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모 www.acmicpc.net 처음에 무슨 소리인가 싶어서 5분간 예제 보면서 고민하다가 내린 결론은 간단했다. 같은 문자가 쭉 가다가 한번 다른 문자가 나오면 그 횟수를 카운트해서, 가장 적은 횟수를 출력해주면 되는 거였음. #include #include using namespace std; int main() { string input; cin >> input; int zero = 0, one = 0; for (int i..
https://www.acmicpc.net/problem/1427 1427번: 소트인사이드 첫째 줄에 정렬하려고 하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 사고과정 1.) 1. 해당 입력을 int형으로 받을 것인지, string으로 받을 것인지 고민. 2. 첫번 째 풀이는 int형으로 해봄. 3. 우선 해당 정수의 자릿수가 필요하고, 4. 배열에 수들을 하나씩 넣어주고 5. 내림차순 sort 함수 사용. 2-1). 두 번째 string형으로 해봄. 2-2). 마찬가지로 바로 sort함수 사용하면됨. 메모리 크기는 비슷하다. #include #include using namespace std; bool Decend(int x, int y..