오늘은 수능이 끝난 다음날로 교장선생님은 1, 2학년 재학생들에게 강당에 모여 어벤져스 영화를 보여준다고 하여 학생들이 강당에 모였습니다. 강당의 좌석은 영화관처럼 계단형이 아니라 평평한 바닥에 의자만 배치하고 학생들이 앉습니 다. 그런데 만약 앞자리에 앉은 키가 큰 학생이 앉으면 그 학생보다 앉은키가 작은 뒷자리 학 생은 스크린이 보이지 않습니다. 한 줄에 앉은키 정보가 주어지면 뒷사람 모두의 시야를 가려 영화 시청이 불가능하게 하는 분노유발자가 그 줄에 몇 명이 있는지 구하는 프로그램을 작성 하세요.
▣ 입력설명 첫 줄에 한 줄에 앉은 학생수 N(3<=N<=100)이 주어집니다. 두 번째 줄에 N명의 앉은 키 정보(45이상 100이하)가 앞 자리 학생부터 차례대로 주어집니다.
▣ 출력설명 자신의 뒷 사람 모두를 시청방해하는 학생수를 출력합니다
이 문제 자체가 이해하기가 어려웠다. 하지만 문제에서 "한 줄에 앉은키 정보가 주어지면 뒷사람 모두의 시야를 가려 ..." 라고 한다, 여기서 뒷사람 모두의 시야에 눈을 맞추어야 코드를 구현할 수 있다. 뒷사람 모두의 시야라고 한다면 뒷사람 중 가장 큰사람의 시야만을 알 수 있으면 된다.
#include<stdio.h>
int main(){
int n, i, cnt=0, h[101], max;
scanf("%d", &n);
for(i=1; i<=n; i++){
scanf("%d", &h[i]);
} //학생들의 키 정보를 받는다.
max=h[n];
for(i=n-1; i>=1; i--){
if(h[i]>max){ // 뒷사람 중 가장 큰 사람의 키보다 크면 분노유발자이다.
max=h[i]; //분노유발자는 이제 뒷사람 중 가장 큰 사람이 된다.
cnt++;
}
}
printf("%d\n", cnt);
return 0;
}
Anagram이란 두 문자열이 알파벳의 나열 순서를 다르지만 그 구성이 일치하면 두 단어는 아나그램이라고 합니다. 예를 들면 AbaAeCe 와 baeeACA 는 알파벳을 나열 순서는 다르지만 그 구성을 살펴보면 A(2), a(1), b(1), C(1), e(2)로 알파벳과 그 개수가 모두 일치합니다. 즉 어느 한 단어를 재 배열하면 상대편 단어가 될 수 있는 것을 아나그램이라 합니다. 길이가 같은 두 개의 단어가 주어지면 두 단어가 아나그램인지 판별하는 프로그램을 작성하세요. 아나그램 판별시 대소문자가 구분됩니다.
▣ 입력설명 첫 줄에 첫 번째 단어가 입력되고, 두 번째 줄에 두 번째 단어가 입력됩니다. 단어의 길이는 100을 넘지 않습니다.
▣ 출력설명 두 단어가 아나그램이면 “YES"를 출력하고, 아니면 ”NO"를 출력합니다.
이 문제를 통해 "아나그램"이란 것을 알게되었다. 알파벳의 배열을 이용해서 푸는 문제였는데 결국 같은 알파벳의 갯수를 가진 단어가 2개 들어간다는 것은 알파펫은 짝수가 된다는 것을 의미한다.
#include <stdio.h>
int b[52];
int main() {
int i, j, sum1 = 0, sum2 = 0, digit, cnt = 0;
char a[100];
for(i = 0; i <= 1; i++) {
scanf("%s", &a);
for(j = 0; a[j] != '\0'; j++) {
if(a[j] >= 65 && a[j] <= 90) {
digit = a[j] - 65;
} else if(a[j] >= 97 && a[j] <= 122) {
digit = a[j] - 71;
}
b[digit]++;
}
} //첫단어와 두번째 단어를 입력받고 알파벳의 배열로 변환하는 과정이다.
for(i = 0; i <= 52; i++) {
if(b[i] % 2 != 0) {
cnt++;
break;
}
} //알파벳 중 홀수가 있으면 NO를 출력하기 위해 판별을 위한 cnt를 조작한다.
if(cnt > 0) {
printf("NO");
} else {
printf("YES");
}
return 0;
}
진짜 코드 못 짜시네요 ㅉㅉ 어디 학교인지 딱 보이네여