메이플스토리 새로운 직업 고르기
NYPC 2023 · Round 1메이플스토리에는 여러 가지 모험가 직업들이 있다.

메이플스토리의 팬인 당신은 여러 모험가 캐릭터를 키워봤다. 이제 안 해본 모험가 캐릭터를 키워보려고 한다. 메이플스토리에 존재하는 모든 모험가 직업과, 당신이 키워본 모험가 직업이 주어졌을 때 당신이 새로 키워볼 수 있는 모험가 직업을 모두 나열하는 프로그램을 작성하시오.
입력 형식
첫 줄에 메이플스토리에 존재하는 모든 모험가 직업의 수 이 주어진다. ()
이어지는 개의 줄에는 모험가 직업이 주어진다. 모험가 직업은 영어 알파벳만으로 이루어진 길이 1 이상 15 이하인 문자열이다. 같은 모험가 직업이 두 번 이상 나오는 경우는 없다. 대문자와 소문자는 구별된다. 예를 들면, hero와 Hero는 다른 직업이다.
그다음 줄에 당신이 키워본 모험가 직업의 수 가 주어진다. ()
이어지는 개의 줄에는 당신이 키워본 모험가 직업이 주어진다. 당신이 키워본 모험가 직업은 메이플스토리에 존재하는 모든 모험가 직업 중 한 가지이며, 다른 캐릭터로 같은 모험가 직업을 택할 수 있으므로 같은 모험가 직업이 두 번 이상 나올 수 있다.
출력 형식
첫 줄에 당신이 새로 키워볼 수 있는 모험가 직업의 수 를 출력한다.
이어지는 개의 줄에 새로 키울 수 있는 모험가 직업을 출력한다. 출력 순서는 중요하지 않다.
예제 1
입력
2 Hero Paladin 1 Hero
출력
1 Paladin
예제 2
입력
2 Hero Paladin 2 Paladin Hero
출력
0
예제 3
입력
3 Hero Paladin DarkKnight 3 Hero Hero Hero
출력
2 DarkKnight Paladin
예제 설명
예제 1에서, 2 가지 직업 Hero와 Paladin이 존재하고 당신은 Hero만 키워봤다. 따라서 당신이 새로 키워볼 수 있는 직업은 Paladin 하나다.
예제 2에서, 2 가지 직업 Hero와 Paladin이 존재하고 당신은 Hero와 Paladin을 모두 키워봤다. 따라서 당신이 새로 키워볼 수 있는 직업은 없다.
예제 3에서, 3 가지 직업 Hero, Paladin, DarkKnight가 존재하고 당신은 Hero만 세 번 키워봤다. 따라서 당신이 새로 키워볼 수 있는 직업은 DarkKnight와 Paladin 둘이다. 이 둘의 순서가 바뀌어도 정답임에 유의하라.
나의 코드
#include <stdio.h>
#include <string.h>
int i, j;
int N, K, T, a=0, b=0, j1[150]; // 변수 선언
char job1[150][20], job2[150][20]; // 직업 변수선언
int main()
{
scanf("%d", &N); // N 입력
for (i=0;i<N;i++) // N만큼 있는 직업 입력
{
scanf("%s", job1[i]);
}
scanf("%d", &K); // K 입력
for (i=0;i<K;i++) // K만큼 키울 직업 입력
{
scanf("%s", job2[i]);
}
for (i=0;i<N;i++)
{
for (j=0;j<K;j++)
{
// 같은 직업인지 비교
if (strcmp(job1[i], job2[j]) == 0)
{
a = 1;
break;
}
}
if (!a) // 아니라면
{
j1[b] = i;
T++; // 갯수 증가
b++; // 반복할만큼 증가
}
a = 0; // 초기화
}
printf("%d\n", T); // 새로 키울수 있는 직업수 출력
for(i=0;i<b;i++) // 새로 키울 직업만 출력
{
printf("%s\n", job1[j1[i]]);
}
return 0;
}
'알고리즘 공부 > 기타 C 언어 알고리즘' 카테고리의 다른 글
코드업 3129:올바른 괄호 2(C) (0) | 2023.10.03 |
---|---|
넥슨은 다람쥐를 뿌려라 (0) | 2023.09.18 |