https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWvzGUKKPVwDFASy
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
문제
경표는 아래와 같이 삼각형 모양으로 숫자를 쌓기로 했다.
1층에는 1개, 2층에는 3개, 3층에는 5개, … 와 같이 쌓는다.
위와 같이 경표는 끝도 없이 피라미드를 쌓을 때, N층의 제일 왼쪽, 오른쪽에 쓰게 될 숫자가 무엇일지 예측해보자.
입력
첫 번째 줄에 테스트 케이스의 수 T가 주어진다.
각 테스트 케이스의 첫 번째 줄에는 층의 번호 N(1≤N≤109)이 주어진다.
출력
각 테스트 케이스마다 ‘#x’(x는 테스트케이스 번호를 의미하며 1부터 시작한다)를 출력하고,
각 테스트 케이스마다 N층의 제일 왼쪽, 오른쪽에 쓰게 될 숫자를 공백으로 구별하여 출력한다.
소스코드
import java.io.*;
class Solution {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int t = Integer.parseInt(br.readLine());
for (int i = 0; i < t; i++) {
int n = Integer.parseInt(br.readLine());
long left = 1, right = 1;
long leftPlus = -2, rightPlus = 2;
for (int j = 1; j < n; j++) {
leftPlus += 4;
rightPlus += 4;
left += leftPlus;
right += rightPlus;
}
sb.append("#" + (i + 1) + " " + left + " " + right + "\n");
}
System.out.println(sb);
}
}
해결 방법
- 홀수 피라미드를 살펴보면 왼쪽값과 오른쪽값의 규칙을 찾을 수 있다. 4씩 증가하여 더해진다.
- 더해지는 왼쪽값: +2, (2+4), (6+4), (10+4), ... / 더해지는 오른쪽: +6, (6+4), (10+4), (14+4), ...
- 왼쪽값(left), 오른쪽값(right), 더해지는 왼쪽값(leftPlus), 더해지는 오른쪽값(rightPlus)을 변수로 두고 위 규칙에 맞게 구현한다.
'알고리즘 > SWEA' 카테고리의 다른 글
[SWEA] 16800번 : 구구단 걷기 (0) | 2023.11.05 |
---|---|
[SWEA] 4615번 : 재미있는 오셀로 게임 (0) | 2023.11.05 |
[SWEA] 11315번 : 오목 판정 (1) | 2023.11.03 |
[SWEA] 1860번 : 진기의 최고급 붕어빵 (0) | 2023.11.02 |
[SWEA] 9658번 : 유효숫자 표기 (1) | 2023.11.02 |