Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- BOJ
- CSS
- HTML
- 연결요소의개수
- 백준
- 확인문제
- 프로그래밍언어
- 코딩
- 웹
- 후기
- 부스트코스
- 필기후기
- 정수내림차순으로배치하기
- 농은면접
- 프로그래머스
- java
- 한국재정정보원
- 웹프로그래밍
- 필기
- 프로그래밍
- Linux
- 건보필기
- 수박수박수박수박수?
- 공부
- 인강
- algorithm
- 이클립스
- 알고리즘
- 중소기업면접
- 웹개발
Archives
- Today
- Total
공부하는 히욤이
3408. 세가지 합 구하기 본문
SW Expert 3408. 세가지 합 구하기
* 문제의 저작권은 SW Expert에 있습니다
맨 처음 마구잡이로 풀었던 코드
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; public class Solution { public static void main(String[] args) throws NumberFormatException, IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int T = Integer.parseInt(br.readLine()); for (int test_case = 1; test_case <=T; test_case++) { int s1 = 0, s2 = 0, s3 = 0; long n = Integer.parseInt(br.readLine()); int cnt = 0; int count = 0; for (int i = 1; i <= n; i++) { s1+=i; } int i = 0; while (true) { i++; if (i%2 !=0 ) { cnt++; s2 = s2 +i; } if (cnt == n) { break; } } i=0; while (true) { i++; if (i%2 == 0 ) { count++; s3 +=i; } if (count == n) { break; } } System.out.println("#"+test_case + " " +s1 + " " +s2 + " " +s3); } } } | cs |
시간 제한을 못 보고 그냥 막 풀었더니 시간 초과가 떴다.
시간 초과가 왜 나지 싶어 최대한 줄이고 수정해봤는데도 계속 시간 초과가 떠서 시간을 확인해보니
띠용 ?!
테스트 케이스 100000개 합쳐서 2초였다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Solution_3408 { public static void main(String[] args) throws NumberFormatException, IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int T = Integer.parseInt(br.readLine()); for (int test_case = 1; test_case <=T; test_case++) { long s1 = 0, s2 =0, s3 = 0; long N = Integer.parseInt(br.readLine()); s2 = (N*N); s3 = s2+N; s1 = s3/2; System.out.println("#"+test_case + " " +s1 + " " +s2 + " " +s3); } } } | cs |
식을 잘 보면 규칙이 있는데 이 규칙을 활용해서 풀면 시간 이내에 풀 수 있었다
그리고 결과 값의 범위만 커질거라 생각해서 결과 변수들만 long 타입으로 받고 입력 받는 변수는 int로 받았는데
히든 테스트케이스에서는 입력 받는 수의 변수도 큰 값이 있는지 long 타입으로 줘야 Pass가 됐다
'Algorithm > SW Expert Academy' 카테고리의 다른 글
4299. 태혁이의 사랑은 타이밍 (5) | 2019.03.05 |
---|---|
1221. [S/W 문제해결 기본] 5일차 - GNS (0) | 2019.03.05 |
1928. Base64 Decoder (0) | 2019.03.05 |
2043. 서랍의 비밀번호 (0) | 2019.03.05 |
1959. 두 개의 숫자열 (0) | 2019.03.02 |