You will be fine

<Algorithm> 119. 암호생성기(SWExpert)

by BFine
반응형

1. 암호생성기(SWExpert)

  • 간단한 문제해결능력 문제

  • 이문제를 풀면서 다른 규칙이 있지 않을까 했지만 반복이 딱 맞춰서 이루어지지 않았고 다른 사람들의 코드도 내꺼랑 비슷한 걸로 보아서 규칙이 있는 문제는 아니였다.(난이도도 D3..)

  • 무한 Stream을 이용하여 풀어보려고 했는데 Stream 함수 자체가 break를 생각해서 만든 API가 아니란 것을 깨달았고 공부하려고 Stream을 문제에 사용하고 있지만 단순 loop를 Stream으로 바꾸는 것은 비효율적이고 개발한 이념?에도 맞지 않는다는 걸 다시 한 번 느꼈다.  

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
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Deque;
import java.util.LinkedList;
import java.util.StringTokenizer;
import java.util.stream.IntStream;
 
public class Solution {
    public static void main(String[] args) throws IOException {
 
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder("");
       /******************************
        * 주어진 조건 대로 앞에 1 ~ 5 줄이고
        * 다시 추가하는 것을 반복하여 0이 될때
        * 출력한다.
        *******************************/
        for (int t = 0; t < 10; t++) {
            int N = Integer.parseInt(br.readLine());
            Deque<Integer> list = new LinkedList<Integer>();
            StringTokenizer st = new StringTokenizer(br.readLine());
 
            IntStream.range(0,8).forEach(i-> list.add(Integer.parseInt(st.nextToken())));
 
            int sub = 1;
 
            while(true){
 
                int k = list.pollFirst();
                int res = k - sub;
                if(res <= ){
                    list.add(0);
                    break;
                }
                list.add(res);
                if(sub == 5) sub = 1;
                else sub++;
            }
 
            sb.append("#"+(t+1)+" ");
            list.stream().forEach(str->sb.append(str+" "));
            sb.append("\n");
        }
        System.out.println(sb.toString());
    }
}
 
cs



참고 & 출처  

반응형

블로그의 정보

57개월 BackEnd

BFine

활동하기