일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 자료구조 데크
- grid html
- 풀스택?
- 스택 중위수식
- rest graphql
- 장고 하는법
- 루비 초보
- 중위수식을 후위수식
- 괄호 유효성
- 장고 웹 만들기
- 스택 구현
- 스택 삭제
- 스택 삽입
- rest gql
- 데크 구현
- 스택 유효성
- 중위수식
- 스택 괄호
- flex html
- 풀스택
- go
- 괄호 짝 잘맞는지
- restapi graphql
- golang
- 스택 자료구조
- Django tutorial
- grid flex
- 스택 후위수식
- https://stackoverflow.com/questions/219110/how-python-web-frameworks-wsgi-and-cgi-fit-together/219124#219124
- 후위수식
- Today
- Total
donchanee
배열 문제 #5. 본문
- 사용자에게서 입력받을 정수의 개수 N을 입력 받는다. 4≦N≦10
- 사용자에게서 정수 N 개를 입력 받아 배열 x[ ]에 저장하시오.
- 배열에 저장된 입력받은 정수 중 두 번째로 큰 정수와 두 번째로 작은 정수를 출력하시오.
이 문제는 첫 번째로 큰 정수와 첫 번째로 작은 정수가 아닌 두 번째의 정수들을 출력하는 문제이다.
#include <stdio.h>
int main(void){
int x[10], y[10], i, j, N;
scanf("%d", &N);
for(i=0;i<N;i++) {
scanf("%d", &x[i]);
}
for(i=0;i<N;i++) {
y[i]=0;
for(j=0;j<N;j++) {
if (x[i] < x[j])
y[i]++;
}
}
for(i=0;i<N;i++) {
if ( y[i] == 1 ) {
printf("%d\n", x[i]);
}
if ( y[i] == (N-2) ) {
printf("%d", x[i]);
}
}
return 0;
}
나는 이렇게 생각했었다. 하지만
N = 4 // 5 5 6 5 와 같은 예시에서는 5 5 5 가 출력되므로 오답인 것을 알 수 있다.
#include <stdio.h>
int main(void){
int x[10], tmp, i, j, N;
scanf("%d", &N);
for(i=0;i<N;i++) {
scanf("%d", &x[i]);
}
for (i=0; i<N; i++) {
for (j=0; j<N; j++) {
if( x[j] < x[j+1] ) {
tmp = x[j];
x[j] = x[j+1];
x[j+1] = tmp;
}
}
}
printf("%d\n", x[1]);
printf("%d\n", x[N-2]);
return 0;
}
이 문제에 대한 답안은 이러하다.
배열을 이용해서 각각 자리의 크기 비교를 한다.
배열의 0번 자리에 가장 큰것을 배치하고 배열의 마지막 부분, 즉 N-1 번째 자리에 가장 작은 수를 배치하여
배열의 1번 부분과 배열의 N-2번 부분을 출력하면 그것이 두 번째 큰 수와 두 번째 작은 수임을 알수 있다.
참신해. 내가 너무 어렵게 생각했었던걸까.