ALGORITHM/C++ algorithm

[백준 6246] 풍선놀이

호이호이호잇 2018. 11. 14. 15:59
728x90
반응형

DP문제를 찾아서 풀다가 못풀어서 못올린게 3문제나 있다..

DP문제를 골라서 푸는거 잠시 휴식기를 두고, 전체 문제 중에 랜덤으로 돌려서 문제를 풀었다.

쉬워보였는데, 생각보다 조금 막혔다..ㅠ

다음에는 꼼꼼하게 풀어서 한번에 통과하고 싶다!! 



#문제



#풀이

쉬어보여서 한번에 통과할 줄 알았는데, 생각하지 못했던 실수가 존재했다.


1. 0부터 풍선의 갯수-1 까지로 바꿔서 계산을 해주려 했는데 틀림 -> 1부터 갯수까지로 생각해줘도 상관이 없음을 깨닫고 그냥 바꿨다.

그래서 4번이나 도전했고, 결국 나의 꼼꼼하지 못했던 성격때문에 틀렸음을 알았다.

처음부터 꼼꼼하게 생각했으면 될것을 .. ㅠㅠ 

다음에는 한번에 통과해야지


https://github.com/leehy0321/algorithm_study/blob/master/Baekjoon/6246.cpp

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
32
33
34
35
36
37
38
39
40
41
42
43
#include<iostream>
 
using namespace std;
 
int balloon[10000]; // 풍선이 설치되지 않은 부분 : 0 / 설치한 부분 : 1
int howmanyones; // 설치된 부분이 몇개인가 = 1인 부분이 몇개인가
 
void make_balloon(int _from, int _whichslot, int _howmanyballoons)
{
    int balloon_index=0;
 
    balloon_index =  _from; // 시작 부분 지정
    
    while (balloon_index <= _howmanyballoons) // 인덱스가 전체 풍선 개수보다 작은 것만 계산하면 됩니다.
    {
        if (balloon[balloon_index]==0// 풍선이 설치되지 않은 것만 체크해줍니다.
        {
            balloon[balloon_index] = 1// 설치를 하니까 1로 바꿔줍니다.
            howmanyones++// 1로 바뀌니까 1로 체크를 해줍니다.
        }
 
        balloon_index = balloon_index + _whichslot; // 다음 방문할 곳을 정해줍니다. _whichslot : 몇개의 텀을 주고 방문하는지
    }
}
int main()
{
    //입력 받기 위한 변수
    int howmanyballons, howmanycases; // 풍선의 갯수 / 경우의 수
    int from, whichslot; // 어디부터 시작할지 / 몇개의 텀을 줄 것인지
 
    cin >> howmanyballons >> howmanycases;// 몇개의 풍선인가? / 몇 개의 경우의 수가 존재하는가?
 
    for (int i = 0; i < howmanycases; i++)//경우의 수 만큼
    {
        cin >> from >> whichslot; // from 부터 시작으로 // whichslot 몇칸마다 한개씩?
 
        make_balloon(from, whichslot, howmanyballons); // 풍선이 설치된 곳의 수를 세어줍니다.
    }
    
    cout <<howmanyballons - howmanyones<<endl// 설치되지 않은 곳을 출력해야하니까 ((전체 - 설치된 곳))을 출력.
 
    return 0;
}
cs


728x90
반응형