-
탐색_220712데일리 codeup/일차원 배열 2022. 7. 12. 15:32
문자를 원소로 갖는 배열
char word[5] = { 'A', 'P', 'P', 'L', 'E' };
중 문자 'L'가 배열 안에 있는지, 있다면 몇 번째 index에 있는지 찾기idx
라는 변수를 사용하여 for loop에서 index번호를 찾는다.
특정 위치의 문자
6개의 문자 배열을 만들고 각각 'L', 'E', 'B', 'R', 'O', 'S'로 초기화한 후에, 문자 한 개가 주어지면 배열의 위치를 출력하는 프로그램을 작성해보세요. 배열의 첫 번째 위치는 0번이며 배열에 없는 문자가 주어지면 "None"이라는 메시지를 출력합니다.
#include <iostream> using namespace std; int main(){ char a[6] = {'L', 'E', 'B', 'R', 'O', 'S'}; int idx = -1; char b; cin >> b; for(int i=0;i<6;i++){ if(a[i]==b){ idx = i; break; } } if(idx==-1) cout<<"None"; else cout<<idx; return 0; }
개수 세기
정수 n이 주어지면 그 횟수만큼 수가 주어집니다. 그 중 m이 몇 번 등장하는지 구해 출력하는 프로그램을 작성해보세요.
#include <iostream> using namespace std; int main(){ int n,m,k,cnt = 0; cin >> n >> m; for(int i=0;i<n;i++){ cin >> k; if(m==k) cnt++; } cout<< cnt; return 0; }
배열 놀이
n개의 원소와 q개의 질의가 주어졌을 때 n개의 원소에 대해 각 질의를 수행하는 프로그램을 작성해보세요. 질의의 종류는 다음과 같습니다.
1 a
- a번째 원소를 출력합니다.
2 a
- 숫자 a가 있는지를 판단합니다. 만약 있다면 해당 원소가 몇 번째 원소인지를 출력합니다. 숫자 a가 2개 이상 있다면 index가 더 작은 원소를 출력합 니다. 만약 a가 없다면 0을 출력합니다.
3 a b
- a번째 원소부터 b번째 원소까지 순서대로 공백을 사이에 두고 출력합니다.
#include <iostream> using namespace std; int main(){ int n,q, num,a,b, idx; cin >> n >> q; int m[n]; for(int i=0;i<n;i++) cin >> m[i]; for(int j=0;j<q;j++){ idx = 0; cin >> num >> a; if(num==1){ cout<<m[a-1]<<endl; } else if(num==2){ for(int l=0;l<n;l++){ if(m[l]==a){ idx = l+1; break; } } cout << idx<<endl; } if(num==3){ cin>>b; for(int x=a;x<=b;x++) cout<<m[x-1]<<' '; cout<<endl; } } return 0; }
입력
5 5 3 2 4 5 4 1 4 2 4 2 5 3 1 5 3 2 5
출력 결과
5 3 4 3 2 4 5 4 2 4 5 4
연속부분수열일까
n1개의 원소로 이루어져 있는 수열 A의 정보와, n2개의 원소로 이루어져 있는 수열 B의 정보가 주어졌을 때 수열 B가 수열 A의 연속부분수열인지를 판단하는 프로그램을 작성해보세요.
수열 B가 수열 A의 원소들을 연속하게 뽑았을 때 나올 수 있는 수열이라면 연속부분수열이라 부릅니다.
예를 들어 수열 A가 [1, 5, 2, 6] 일때 수열 B가 [5, 2]라면 수열 B는 수열 A의 연속 부분 수열이지만, 만약 수열 B가 [5, 6]이라면 연속 부분 수열이 아닙니다.
#include <iostream> using namespace std; int main(){ int n,m,index = 0,result = 0; cin >> n >> m; int a[n],b[m]; for(int i=0;i<n;i++) cin>>a[i]; for(int j=0;j<m;j++) cin>>b[j]; for(int k=0;k<n-m+1;k++){ if(a[k]==b[0]){ result = 1; for(int l=1;l<m;l++){ if(a[k+l]!=b[l]){ result = 0; break; } } } if(result == 1) break; } if(result == 0) cout<<"No"; else cout<<"Yes"; return 0; }
입력1
4 2 1 5 2 6 5 6
출력
No
입력2
66 37 78 78 3 49 28 83 12 52 68 41 34 97 21 33 35 43 96 38 68 80 91 91 41 88 71 37 72 29 77 80 80 7 64 7 7 77 2 66 37 66 26 63 81 48 81 14 3 26 28 72 99 58 81 94 98 8 20 52 71 4 38 37 4 11 79 70 91 91 41 88 71 37 72 29 77 80 80 7 64 7 7 77 2 66 37 66 26 63 81 48 81 14 3 26 28 72 99 58 81 94 98 8 20
출력
Yes
2가 3번째로 등장하는 위치
n개의 정수가 주어졌을 때, 2 가 3 번째로 등장할 때 몇 번째 위치의 글자인지 출력하는 프로그램을 작성해보세요.
#include <iostream> using namespace std; int main(){ int i, n,m, cnt = 0; cin >> n; for(i=0;i<n;i++){ cin>>m; if(m==2) cnt++; if(cnt==3) break; } cout<< i+1; return 0; }
'데일리 codeup > 일차원 배열' 카테고리의 다른 글
최대최소_220712 (0) 2022.07.12 count배열_220712 (0) 2022.07.12 배열만들기_220711 (0) 2022.07.11 인덱스 참조_220711 (0) 2022.07.11 한줄에 여러개 입력2_220711 (0) 2022.07.11