티스토리 뷰

알고리즘/BOJ

[백준] 3088 화분 부수기

세진짱 2020. 3. 30. 23:31

 

오래 고민한 문제다..!

이런거 참 생각을 잘 못하는거같다

 

어떤 화분을 깨면 화분에 해당하는 숫자가 오른쪽에 임의에 화분에 있다면 그 화분도 깰수있다

계속 연속적으로 이어져간다

 

자 생각을 해보자..!

 

맨 처음 화분은 무조건 깨야만한다. 안그러면 아무도 깨주지 않으므로..!

그럼 맨 처음 화분에 포함되는 수를 앞으로 만난다면 그 화분도 무조건 깨져야한다

그럼 입력받으면서 처리할 수 있다..!

 

화분을 깨지는 수를 계속 저장해가며 하나라도 가지고 있으면 깨버리자!

소스는 참 짧다!

 

처음에는 set을 썼는데 그럼 시간이 너무 오래 걸린다

배열을 이용하자

 

소스코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <bits/stdc++.h>
using namespace std;
 
#define ll long long
int n,ans;
bool check[1000001];
int main(){
    scanf(" %d",&n);
    for(int i=0;i<n;i++){
        int a,b,c; scanf(" %d %d %d",&a,&b,&c);
        if(!check[a] && !check[b] && !check[c]) ans++;
        check[a]=check[b]=check[c]=true;
    }
    printf("%d\n",ans);
}
 
 
 

'알고리즘 > BOJ' 카테고리의 다른 글

[백준] 16227 의약품 수송  (0) 2020.04.05
[백준] 5214 환승  (0) 2020.03.31
[백준] 9765 여섯 방정식  (0) 2020.03.30
[백준] 16932 모양 만들기  (0) 2020.03.06
[백준] 2580 스도쿠  (0) 2020.02.18
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/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
글 보관함