[데이터 구조론][과제] 01 배열 속 특정한 값 x 찾기
본격적으로 코딩에 관심을 붙이게 해주었던 애증의 데이터 구조론… 알고리즘 이론만 듣는 것도 어려운데 그걸 또 C++(전학기에 D+ 맞았음)로 구현하고 소감문까지 작성해 과제를 제출해야 해서 정말정말 힘들었다. 지금 봐도 너무 부끄러운 수준의 과제이지만 이겨내야 더 발전할 수 있는 거니까 응응…
배열 속 특정한 값 x를 찾는 프로그램 작성
2019-09-07
프로그램 리스트
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include<iostream>
using namespace std;
int main() {
int a[10] = {10, 50, 55, 100, 20, 40, 70, 101, 58, 3};
int x;
int i;
cout << "숫자를 입력하세요." << endl;
cin >> x;
for (i=0; i<10; i++) {
if (a[i]==x) {
cout << "찾았습니다! " << x << "의 위치는 " << i << "번째 입니다." << endl;
}
else if (i==9 && a[i]!=x)
cout << x << "은(는) 배열에 없는 숫자입니다." << endl;
}
return 0;
}
소감문
데이터 구조론 첫 번째 과제는 int 배열 a에 10개의 int가 들어있는 경우에 특정한 값 x를 찾는 것이었습니다. 솔직히 말하면, 작년 C++ 과목의 성적이 매우 좋지 않았고 수업을 듣는 중에도 어려움이 있었기 때문에, 데이터 구조론을 이번 학기에 수강하는 것이 맞는지에 대해 고민이 많았습니다. 첫 수업 역시 알고리즘을 구상하는 데에는 크게 무리가 없었으나 이를 어떻게 코딩해야 하는지에 대해서는 막막했습니다. 그러나 수업 중에 test data가 첫번째, 알고리즘을 생각하는 것이 두번째, 그리고 알고리즘을 바탕으로 코딩을 하는 것이 마지막 차례이며, 컴퓨터 앞에 앉기 전에 충분히 오랜 시간을 생각하는 데 써야 한다는 것을 알았습니다. 물론 C++ 체계에 대한 이해가 부족하면 알고리즘을 구상하고 수업을 듣는 데 어려움이 있겠지만, 그럼에도 불구하고 수업 중에 부족하다고 느낀 부분을 수업 후에 그때그때 보충하고 차근차근 공부해 나가고 싶다는 생각이 들 정도로 흥미를 느꼈습니다. 처음 과제를 했을 때는 for문 안에 cin으로 입력을 받아, 배열 안의 숫자를 순서대로 입력하지 않으면 배열 안에 있는 숫자이더라도 ‘배열 안에 없는 숫자입니다. ’라는 문구가 나왔습니다. 배열의 인덱스를 알려면, 문자 i를 입력해야 한다는 것을 깨닫기까지도 꽤 오랜 시간이 걸렸습니다. 시행착오 끝에 cin을 for문 밖에 써야 한다는 것을 알았고, 배열 안에 없는 숫자일 경우, ‘배열 안에 없는 숫자’라고 출력해 낼 수도 있게 되었습니다. 사실, 배열 안에 없는 숫자일 경우, 배열 안에 있는 숫자를 다시 입력할 때까지 반복시키고 싶었으나 아직 거기까지는 성공하지 못해 아쉬웠습니다.
2023-09-18
지금 와서 보니 정말 기초적인 수준의 과제였지만 이때는 정말 많은 시행착오를 겪었던 걸로 기억한다. 1학년 2학기에 C++을 배웠는데 처음에는 코딩이 재밌었지만 변별력 없던 중간고사(강의 교재에 있는 예제가 그대로 나온 오픈북 시험..)에서 나름 재미붙어 자신감 있었지만 책은 없던 나보다 수업 매일 출튀하고 책 가져와 그대로 베껴 제출한 친구들이 더 잘봐서.. 그 이후로 흥미를 잃고 불성실하게 수업을 들었기 때문이다. 그래도 꿋꿋하게 해결해 낸 게 나름 자랑스럽고.. 이것저것 알았다고 했지만 사실 제대로 알지는 못했다는 걸 이제서야 알았다. 배열 안에 없는 숫자일 경우 ~ 정도는 금방 구현할 수 있을 것 같아서 조금 더 고쳐봤는데 c++이 너무 오랜만이라 문법도 다 까먹어서 생각보다 오래 걸렸다. 배열 안에 있는 숫자를 입력할 때까지 반복문을 돌리기 위해 숫자를 찾는 부분은 함수로 구현했는데 지금도 불필요한 지저분한 부분들이 있는 것 같지만.. 이건 또 나중의 좀 더 똑똑해진 내가 해줄 거야~~
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include<iostream>
using namespace std;
int find(int a[], int length , int x);
int main() {
int a[10] = {10, 50, 55, 100, 20, 40, 70, 101, 58, 3};
int length = sizeof(a)/sizeof(int);
int x;
int i;
while(true) {
cout << "숫자를 입력하세요." << endl;
cin >> x;
int idx = find(a, length, x);
if (idx!=-1) {
cout << "찾았습니다! " << x << "의 위치는 " << idx+1 << "번째 입니다." << endl;
break;
}
cout << x << "은(는) 배열에 없는 숫자입니다." << endl;
}
return 0;
}
int find(int a[], int length ,int x) {
for (int i=0; i<length; i++) {
if(a[i]==x) {
return i;
break;
}
else if(i==length-1 && a[i]!=x)
return -1;
}
return -1;
}