bulb 와 switch

Posted by ironmask84
2016. 5. 17. 17:14 나는 프로그래머다!/코딩 중...




다양한 공식적인 프로그래밍 대회가 있지만

참고로 아시아권에서 펼쳐지는 프로그래밍 대회로 ACML 라는 게 있습니다.


그리고 코드포스 (code forces) 라는 (https://codeforces.com/)

프로그래밍 경시대회? 혹은 프로그래밍 올림피아드 같은 비공식 대회가 있습니다.

https://ironmask.net/279 에서 한번 간략히 소개를 했었네요 ㅋㅋ


저는 2016년에 가입을 햇었고 사내 프로그래밍 대회에 참여를 해보려는 심산이었죠 ㅎㅎ

생각보다 프로그래밍에 그렇게 취미를 붙이기는 쉽지 않아서

결국 2문제 도전 해보고 포기했네요 ㅜㅜ


그 중 처음으로 풀어서 문제 조건을 해결해낸 문제가 아래 문제입니다.

http://codeforces.com/contest/615/problem/A


보통 프로그래밍 대회에서 나올법한 문제들은,

대량의 연산을 요구하고, 이를 빠른 수행이 완료될 것을 요구합니다.

그리고 실제대회에서는 이러한 문제를 시간내에 풀어야 하죠 ㅜㅜ

사실 문제 풀 시간을 무한정 주더라도 문제 풀어내기가 힘든 레벨입니다. ㅋ


프로그래머를 직업으로 했던 저로서는 부끄러운 일 일지 모르겠습니다만,

원래 하던 코드만 만지다 보면 이런 코드 상당히 어렵습니다.


참고로, 국정원에 도전해본적이 있었는데,

실기 시험문제가 비슷한 방식의 문제들이었던 것 같네요.


아래는 해결했던 코드입니다.

사실 Java보다 C나 C++로 해야 더욱 빠른 해결 접근법이 가능합니다만,

이때부터 Java가 주력언어가 되어서 Java로 해결했습죠..


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
44
45
46
47
48
49
50
51
import java.util.Scanner;
import java.util.StringTokenizer;
 
public class Bulbs_standard {
 
    public static void main(String[] args) {
        Scanner sc = null;
        
        int c;
        String str1 = null;
        String str2 = null;
 
        int n, m = 0// button num, bulb num
        boolean[] bulbs = null;
        int cnt_turn_on = 0;
        int turn_on_bulb_num = 0;
 
        sc = new Scanner(System.in);
 
        if (sc.hasNextLine())
            str1 = sc.nextLine();
        else
            return;
 
        StringTokenizer stk = new StringTokenizer(str1, " ");
        n = Integer.parseInt(stk.nextToken()); // button number
        m = Integer.parseInt(stk.nextToken()); // bulb number
 
        bulbs = new boolean[m];
 
        while (sc.hasNextLine()) {
            str2 = sc.nextLine();
 
            stk = new StringTokenizer(str2, " ");
            cnt_turn_on = Integer.parseInt(stk.nextToken());
 
            for (int i = 1; i <= cnt_turn_on; i++) {
                turn_on_bulb_num = Integer.parseInt(stk.nextToken());
                bulbs[turn_on_bulb_num - 1= true;
            }
        }
 
        for (int i = 0; i < m; i++) {
            if (bulbs[i] == false) {
                System.out.println("NO");
                return;
            }
        }
        System.out.println("YES");
    }
}
cs


언젠가 다시..

프로그램 개발을 Job으로 하는 날이 올거라고 생각합니다..

물론 수준 높은 처우와 함께.. ^^


기초부터 쌓아올려서 다시금 이 때 레벨까지 올라가서

Codeforces를 재방문하는 날이 기다려지네요!