백준 10807번 개수 세기 문제
입력되는 정수의 개수 : 1개부터 100개까지 (1<= N =< 100)
입력되는 정수의 범위 : -100부터 100까지 (-100 <= v =< 100)
자연수가 아니라 정수 v가 -100부터 시작되는 값이어서 어떻게하지 하면서
문제를 보고 초반에는 약간 헤맸는데
다행히 정수 v의 범위가 자연수에 - 부호를 붙여주면 값은 동일하다고 판단해서
자연수 범위의 배열과 마이너스 일때 배열을 따로 추가해서 관리해보았다
입력한 정수의 값이 0보다 큰 경우, arr_plus에 증감연산자를 사용해서
특정 정수를 만날때마다 그 배열의 인덱스를 증가시켜 횟수를 적립시켰다
마찬가지로 0보다 작은 경우, arr_minus에 저장해서 관리함
사용배열 : arr_plus[100], arr_minus[100]
//수도코드
arr_plus[100] = 0;
arr_minus[100] = 0
int input,v;
cin >> input;
for(int i=0; i<input; i++){
if(i>0) arr_plus[i]++;
else arr_minus[-i]++;
}
cin >> v;
if (v>=0) cout << arr_plus[v];
else cout << arr_minus[-v];
대충 이렇게 작성해보았는데
그냥 후루룩 쓰다보니 간과했던게 배열의 범위를 100개가 아닌 101로 주었어야 했음
마이너스 값의 경우 상관없지만, 0부터 100까지의 값을 저장해주어야 하는
arr_plus에서 범위가 초과하는 문제가 생긴다
그래서 2번 틀렸다가 겨우 알아냄..
그렇게 초안에서 다듬고 틀린부분을 수정한 완성본이 아래의 코드
#include <bits/stdc++.h>
using namespace std;
int main() {
int cnt,v;
int arr_plus[101] = {0};
int arr_minus[101] = {0};
cin >> cnt;
int tmp;
for(int i=0; i<cnt; i++){
cin >> tmp;
if(tmp >=0){
arr_plus[tmp]++;
}
else{
arr_minus[-tmp]++;
}
}
cin >> v;
v>=0 ? cout << arr_plus[v] : cout << arr_minus[-v];
return 0;
}
cnt : 맨 처음 입력인 입력할 정수의 개수
tmp : 입력받을 정수들
v : 찾을 정수
arr_plus[101] = 입력받은 tmp 중 0부터 100까지의 정수의 횟수를 저장할 배열
arr_minus[101] = 입력받은 tmp 중 -100부터 -1까지의 정수의 횟수를 저장할 배열
여기서 0을 plus에 둘지 minus 배열에 둘지는 그냥 본인 선택하기에 다를듯
마지막에 삼항연산자 문법을 사용해서 if else문을 줄여보았다
출처 :
10807번: 개수 세기
첫째 줄에 정수의 개수 N(1 ≤ N ≤ 100)이 주어진다. 둘째 줄에는 정수가 공백으로 구분되어져있다. 셋째 줄에는 찾으려고 하는 정수 v가 주어진다. 입력으로 주어지는 정수와 v는 -100보다 크거
www.acmicpc.net
C 언어 코딩 도장: 20.2 삼항 연산자 사용하기
먼저 삼항 연산자를 사용하기 전에 if 조건문으로 num1의 값이 참이면 num2에 100을 할당하고, 거짓이면 num2에 200을 할당하는 코드를 만들어보겠습니다. if_else.c #include int main() { int num1 = 5; int num2; if
dojang.io
'문제풀기' 카테고리의 다른 글
[백준/BOJ] 배열 1919번 문제, 애너그램 만들기 C++ 풀이 (0) | 2021.08.08 |
---|---|
[백준/BOJ] 배열 1475번 문제, 방 번호 C++ 풀이 (0) | 2021.08.07 |
비쥬얼 스튜디오 설치 없는 온라인 컴파일러 사이트 추천, ideone (0) | 2021.08.06 |
[백준/BOJ] 21312번 문제, 홀짝 칵테일 C++ 풀이 (0) | 2021.03.28 |
[백준/BOJ] 구현 14681번 문제, 사분면 고르기 C++ 풀이 (0) | 2021.03.27 |
[백준/BOJ] 구현 11720번 문제, 숫자의 합 C++ 풀이 (0) | 2021.03.24 |