티스토리 뷰

var n,m,i,j,k,f,p:int64;a:array[1..2000]of string;x,y,z:string;
begin
p:=1;
a[1]:='ChongChong';
readln(n);
for i:=1 to n do begin
readln(z); //문자열 두개 입력받기
m:=length(z);
f:=0;x:='';y:='';
for j:=1 to m do begin //문자열을 공백기준으로 두개로 나누기
if z[j]=' ' then begin f:=1;end
else begin if f=0 then x+=z[j] else y+=z[j];end;
end;

f:=0;k:=0;
for j:=1 to p do begin //춤을 추는 사람이 있는지 확인
 if x=a[j] then f+=1;
 if y=a[j] then k+=1;
end; //춤추는 사람 1명, 못추는 사람 1명인 경우 -> 그 1명도 이제 춤을 출 수 있다.
if (f=0) and (k=1) then begin p+=1;a[p]:=x;end;
if (f=1) and (k=0) then begin p+=1;a[p]:=y;end;
end;
write(p); //춤추는 사람 출력
end.

 

풀이 : 부르트 포스?

 

a 는 문자열 배열입니다. 무지개 댄스를 칠 줄 아는 ChongChong이가 반드시 1번은 입력으로 들어오기에 미리 넣어놓습니다.

 

그다음 n 번 두개의 문자열들을 입력받으면서, 둘 중 한명이 a에 있다면 춤을 출줄 모르는 사람또한 춤을 추게 되니 a에 집어 넣습니다 (두명다 출줄 알거나, 두명다 추지 못한다면 a에 넣지 않습니다)

 

이 과정을 반복하다보면 a에는 춤을 출줄 아는 사람들의 이름만을 가지고 있게 되며, 이 a의 요소의 값을 출력하면 됩니다.

 

https://www.acmicpc.net/problem/26069

 

최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
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
글 보관함