<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 <= 0 ){ 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 |
참고 & 출처
반응형
'공부(2018~2019) - 스킨변경전 > Algorithm' 카테고리의 다른 글
<Algorithm> 121. 나는개구리로소이다(SWExpert) (0) | 2019.02.21 |
---|---|
<Algorithm> 120. 뉴스클러스터링(KAKAO) (0) | 2019.02.20 |
<Algorithm> 118. 회문1(SWExpert) (0) | 2019.02.18 |
<Algorithm> 117. 중위순회(SWExpert) (0) | 2019.02.17 |
<Algorithm> 116. 보호필름(SWExpert) (0) | 2019.02.16 |
블로그의 정보
57개월 BackEnd
BFine