-
์๊ณ ๋ฆฌ์ฆ - ์ซ์ ํผ๋ผ๋ฏธ๋๊ฐ๋ฐ/Algorithm 2022. 3. 16. 23:59
๋ฌธ์
N๊ณผ ์์ ์ซ์ S๊ฐ ์ฃผ์ด์ง๋ฉด ์ซ์ ํผ๋ผ๋ฏธ๋๋ฅผ ๋ง๋๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์๋ฅผ ๋ค์ด, N์ด 5์ด๊ณ S๊ฐ 3 ์ด๋ผ๋ฉด, ๊ทธ ์ซ์ ํผ๋ผ๋ฏธ๋๋ ๋ค์๊ณผ ๊ฐ๋ค.3 456 21987 3456789 987654321
- ์์ ์ซ์ S๋ ๊ผญ๋๊ธฐ๋ถํฐ 1์ฉ ์ฆ๊ฐํ๋ค.
- ์์ ํ์ ๋ฒํธ๊ฐ 1๋ฒ์ด๋ผ๊ณ ํ์๋, ์ง์๋ฒ์งธ ํ์ ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ์ผ๋ก 1์ฉ ์ฆ๊ฐํ๋๋ก ์ ๊ณ , ํ์๋ฒ์งธ ํ์ ๊ฑฐ๊พธ๋ก ์ ๋๋ค.
- ์ซ์๊ฐ ๋ง์ฝ 10์ด ๋ ๊ฒฝ์ฐ, 1๋ก ๋ฐ๊พธ๊ณ ๋ค์ ์ฆ๊ฐํ๋ค.
์ ๋ ฅ
์ ๋ ฅ์ ์ฒซ ๋ฒ์งธ ์ค์ N๊ณผ ์์ ์ซ์ S๊ฐ ์ฃผ์ด์ง๋ค. ( 1≤N≤100, 1 ≤S≤ 9)
์ถ๋ ฅ
์ฒซ ๋ฒ์งธ ์ค๋ถํฐ ์ซ์ ํผ๋ผ๋ฏธ๋๋ฅผ ์ถ๋ ฅํ๋ค. (๊ฐ ์ค์ ์กด์ฌํ๋ ๊ณต๋ฐฑ์ ๊ฐ์์ ์ซ์์ ๊ฐ์๋ฅผ ์ ํํ๊ฒ ํ์ธํด์ฃผ์๋ฐ๋๋๋ค.)
์์ ์ ๋ ฅ
5 3
์์ ์ถ๋ ฅ
3 456 21987 3456789 987654321
์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ๋ฅผ ํ ๋, ์ ๋ ์ ๋๋ฆ๋๋ก ๋ค์๊ณผ ๊ฐ์ด 3๊ฐ์ง๋ฅผ ๊ณ ๋ คํด๋ณด์์ต๋๋ค.
1. ์ ๋ ฅ ๋ฐ๋ ๊ฐ์ ๋ฌด์์ธ๊ฐ?
2. ๊ณ ๋ คํด์ผํ ์ค์ํ ์ด์๋ ๋ฌด์์ธ๊ฐ?
3. ๊ทธ์ ๋ฐ๋ผ ํ์ํ ์ฃผ์ ๋ณ์๋ ๋ฌด์์ธ๊ฐ? (๊ตต์ ๊ธ์จ๋ก ํ์)1. ์ ๋ ฅ ๋ฐ๋ ๊ฐ์ ๋ฌด์์ธ๊ฐ?
- N : ์ฌ๊ธฐ์ N์ด ๋ํ๋ด๋ ๊ฐ์ '์ผ๊ฐํ์ด ๋ชํ์ผ๋ก ์ด๋ฃจ์ด์ ธ ์๋๊ฐ?' ์ ๋๋ค. ์ฃผ๋ก ๋ชํ์ ๊ณง 'for๋ฌธ์ ๋ช๋ฒ ๋๋ฆด ๊ฒ์ธ๊ฐ'์ ํด๋นํ๊ฒ ์ต๋๋ค.
- S : S๋ ์ผ๊ฐํ์์ ๊ฐ์ฅ ๊ผญ๋๊ธฐ์ ๋ค์ด ๊ฐ '์์ ํ๋ ์ซ์' ์ ๋๋ค.
2. ๊ณ ๋ คํด์ผํ ์ค์ํ ์ด์๋ ๋ฌด์์ธ๊ฐ?
- ๊ณต๋ฐฑ์ ๊ฐฏ์ : ์ผ๊ฐํ ๋ฌธ์ ๊ฐ ๋์ค๋ฉด, ํญ์ ๋จผ์ ๊ณ ๋ ค ํ ๊ฒ์ด ํด๋น ํ์ ๋ช๊ฐ์ ๊ณต๋ฐฑ์ ์ฐ์ด์ค ๊ฒ์ธ๊ฐ? ์ ๋๋ค. ๊ณต๋ฐฑ์ ์์ชฝ์๋ง ์ฐ์ด์ฃผ๋ฉด ๋ฉ๋๋ค.
--> ์ฌ๊ธฐ์๋ 1ํ์ 4๊ฐ, 2ํ์ 3๊ฐ, 3ํ์ 2๊ฐ ... ์ด๋ฐ์์ผ๋ก ์ ์ฒด ํ์์ ํ์ฌ ํ์ ๋บ ๊ฐ์ด ๋ฉ๋๋ค.
(ex. ์ ์ฒด ํ์ด 5๋ผ๊ณ ๊ฐ์ ํ์๋, 5-1=4, 5-2=3...)
- ์ซ์์ ๊ฐฏ์ : ์ซ์๋ฅผ ์ฐ์ด์ค ๋, ๋ฐ๋์ ํ์ํ ์ซ์์ ๋๋ค.
--> ์ฌ๊ธฐ์๋ 1ํ์ 1๊ฐ, 2ํ์ 3๊ฐ, 3ํ์ 5๊ฐ ... ์ด๋ฐ์์ผ๋ก ๋ค์ํ์ผ๋ก ๊ฐ๋ ๋ง๋ค 2๊ฐ์ฉ ๋์ด๋ฉ๋๋ค.
- ํ์ํ์ผ๋ : ํ์ ํ์ธ ๊ฒฝ์ฐ ์ซ์๊ฐ ๊ฑฐ๊พธ๋ก ์ฐํ๊ณ ์์ต๋๋ค.
--> ์ฌ๊ธฐ์ ๋ฐ๋์ ์ง๊ณ ๋์ด๊ฐ์ผํ ๊ฒ์ ์ปดํจํฐ๋ ๊ธ์๋ฅผ ํญ์ ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ์ผ๋ก ์ฐ์ต๋๋ค. ๋ฐ๋ผ์ ์ซ์๊ฐ 1์ฉ ๊ฐ์ํ๊ณ ์๋ค๋ ๊ด์ ์ผ๋ก ๋ฐ๋ผ๋ณด๊ณ ์ฝ๋๋ฅผ ์ง์ผํฉ๋๋ค. ๊ฐ์ํ ๊ฒฝ์ฐ ์ซ์๊ฐ 0์ ๋๋ฌํ์ ๋, 9๋ก ์นํํด์ฃผ์ด์ผํฉ๋๋ค.
- ์ง์ํ์ผ๋ : ์ง์ ํ์ธ ๊ฒฝ์ฐ ์ซ์๊ฐ ์ ์์ ์ผ๋ก ์ฐํ๊ณ ์์ต๋๋ค.
--> ๋ง์ฐฌ๊ฐ์ง๋ก ์ซ์๊ฐ 1์ฉ ์ฆ๊ฐํ๊ณ ์์ต๋๋ค. ๋ํ ์ซ์๊ฐ 10์ด ๋ ๊ฒฝ์ฐ, 1๋ก ๋ฐ๊ฟ์ค์ผํฉ๋๋ค.
- ์ซ์๋ฅผ ์ฐ๊ธฐ ์ํด ๊ณ ๋ คํ ๊ฒ.
์์์ ์ฒ๋ผ ์ง์ํ์์๋ ์ซ์๊ฐ 1์ฉ ์ฆ๊ฐํ๊ณ , ํ์ํ์์๋ ์ซ์๊ฐ 1์ฉ ๊ฐ์ํ๋ค๊ณ ํ์ต๋๋ค.
๊ทธ๋ ๋ค๋ฉด ์ฒซ๋ฒ์งธ ์ซ์๊ฐ ๋ฌด์์ธ์ง๋ง ์๋ฉด ๊ฐ๋จํ๊ฒ ํด๊ฒฐ๋๊ฒ ์ต๋๋ค.
๋จผ์ ์ง์ํ์ ์ซ์๋ถํฐ ๋ณด๊ฒ ์ต๋๋ค.
์ง์ํ์ ์ฒซ๋ฒ์งธ ์ซ์๋ ์ด์ ์ซ์์ ์์์ซ์์ +1์ ํ ๊ฐ์ด ์์ ์ซ์์์ ๋ณผ ์ ์์ต๋๋ค.
์๋์ ๊ทธ๋ฆผ์ ๋ณด๊ฒ ์ต๋๋ค.
์์ ๊ทธ๋ฆผ์ฒ๋ผ, 6๋ฒ์งธ์ ์์ ์ซ์๋ 1์ด ๋จ์ ์ฝ๊ฒ ์์ํ ์ ์์ต๋๋ค.
๊ทธ๋ ๋ค๋ฉด ํ์ํ์ ์์์ซ์๋ ์ด๋ป๊ฒ ๋ ์ง ๋ณด๊ฒ ์ต๋๋ค.
ํ์์ ๊ฒฝ์ฐ์๋ ์ง์์ ๋ง์ง๋ง ์ซ์์์ ํ์ํ์ ๋ง์ง๋ง ์ซ์๋ฅผ ์์ํ ํ, ํด๋น ํ์ ์ซ์์ ๊ฐฏ์๋งํผ ์ฆ๊ฐ์ํจ ๋ง์ง๋ง ๊ฐ์ด ๊ณง ํ์ํ์ ์ฒซ๋ฒ์งธ ๊ฐ์ด ๋๊ฒ ์ต๋๋ค.
์ด์ ๊ทธ๋ผ ์ฃผ์ ๊ณ ๋ ค์ฌํญ์ ๋ค ์ดํด ๋ณด์์ผ๋, ์ฝ๋๋ฅผ ํตํด ํ์ธํ๊ฒ ์ต๋๋ค.
์์ธํ ์ค๋ช ์ ์ฃผ์์ ์ฐธ๊ณ ํด์ฃผ์ธ์ :)
import java.util.Scanner; public class Main { public static void main(String[] args) { int N; //๋ชํ int S; //์์์ซ์ int prevFirst; //์ด์ ์์์ซ์ int prevLast; //์ด์ ๋ง์ง๋ง์ซ์ int number = 1; //ํ์์ ์ซ์์ ๊ฐฏ์ Scanner sc = new Scanner(System.in); N = sc.nextInt(); S = sc.nextInt(); prevFirst = S; //๊ฐ์ฅ ์ฒ์์ ์์์ S๋๊น. prevLast = S; //๊ฐ์ฅ ์ฒ์์ ๋ง์ง๋ง๋ S๋๊น. for(int i = 1; i <= N; i++) { //1. ๊ณต๋ฐฑ์ฐ๊ธฐ for(int j = 1; j <= (N - i); j++) System.out.print(" "); //2. ์ซ์์ฐ๊ธฐ //์ง์์ธ๊ฒฝ์ฐ if( i % 2 == 0) { int currentFirst = prevFirst + 1; if(currentFirst == 10) {currentFirst = 1;} for(int j = 0; j < number; j++) { System.out.print(currentFirst); prevLast = currentFirst; currentFirst++; if(currentFirst == 10) {currentFirst = 1;} } } //ํ์์ธ๊ฒฝ์ฐ else { if(i == 1) { System.out.print(S); }else { int currentLast = prevLast + 1; if(currentLast == 10) {currentLast = 1;} for(int j = 0; j < number; j++){ prevFirst = currentLast; //๋ง์ง๋ง ๊ฐ์ด ์์ผ๋ก ํ์ ํ์ ์ฒซ๊ฐ์ด ๋๋ค. ์ดํ์ ์ง์ํ์์ ์์๊ฐ์ ๊ตฌํ ๋ ์ฌ์ฉ๋์ด์ง๋ค. currentLast++; if(currentLast == 10) {currentLast = 1;} } int currentFirst = prevFirst; //๊ฐ์ํ๋ฉด์ ์ฐ๋ ์ฉ๋ for(int j = 0; j < number; j++){ System.out.print(currentFirst); currentFirst--; if(currentFirst == 0) {currentFirst = 9;} } } } number += 2; //ํ ํ์ด ์ง๋ ๋๋ง๋ค 2๊ฐ์ฉ ์ซ์๊ฐฏ์๊ฐ ์ฆ๊ฐ System.out.print("\n"); } } }
'๊ฐ๋ฐ > Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์๊ณ ๋ฆฌ์ฆ - ์ผ๊ฐํ ๊ทธ๋ฆฌ๊ธฐ (0) 2022.03.04 ์๊ณ ๋ฆฌ์ฆ - ์์ ํ๋ณํ๊ธฐ (2) 2022.03.02