πŸš€ Coding Test_

πŸ”’ μ •λ ¬ νŒλ³„ – μ˜€λ¦„μ°¨μˆœ? λ‚΄λ¦Όμ°¨μˆœ? (CodeUp 2008)

CodeLoge 2025. 6. 11. 19:37

❓ 문제 μ„€λͺ…

 

μ •μˆ˜ n개둜 이루어진 μˆ˜μ—΄μ΄ μž…λ ₯λœλ‹€.
이 μˆ˜μ—΄μ΄ μ˜€λ¦„μ°¨μˆœμΈμ§€, λ‚΄λ¦Όμ°¨μˆœμΈμ§€, μ•„λ‹ˆλ©΄ μ„žμ—¬ μžˆλŠ”μ§€λ₯Ό νŒλ‹¨ν•˜μ—¬ 좜λ ₯ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±

• μ˜€λ¦„μ°¨μˆœ : μ•ž 숫자 ≤ λ’· 숫자 (같은 숫자 포함 κ°€λŠ₯)

 λ‚΄λ¦Όμ°¨μˆœ : μ•ž 숫자 ≥ λ’· 숫자 (같은 숫자 포함 κ°€λŠ₯)

 μœ„ 쑰건에 ν•΄λ‹Ήν•˜μ§€ μ•Šκ±°λ‚˜, λͺ¨λ‘ 같은 숫자인 κ²½μš°λŠ” ‘μ„žμž„’으둜 νŒλ‹¨

 

πŸ‘‰ μ˜ˆμ‹œ

 1 1 2 3 5 5 6 → μ˜€λ¦„μ°¨μˆœ

 7 6 6 5 3 1 → λ‚΄λ¦Όμ°¨μˆœ

 21 22 21 22 λ˜λŠ” 3 3 3 3 → μ„žμž„


πŸ“Œ μ œν•œ 쑰건

 

 n은 2 이상 100 μ΄ν•˜

 μˆ˜μ—΄μ˜ 각 μ›μ†ŒλŠ” 1 이상 200 μ΄ν•˜

 μΆœλ ₯은 μ •ν™•νžˆ "μ˜€λ¦„μ°¨μˆœ", "λ‚΄λ¦Όμ°¨μˆœ", "μ„žμž„" 쀑 ν•˜λ‚˜


πŸ” 풀이 μ „λž΅

 

 λ‘ 개의 boolean λ³€μˆ˜ ifUp, ifDown을 μ„ μ–Έ

 μΈμ ‘ν•œ 숫자 μŒμ„ 반볡문으둜 비ꡐ

→ μ•ž < λ’€ → ifUp = true

→ μ•ž > λ’€ → ifDown = true

 λ°˜λ³΅μ΄ λλ‚˜κ³  μƒνƒœλ₯Ό νŒλ‹¨

 λ‘ 값이 λͺ¨λ‘ true → μ„žμž„

 ν•˜λ‚˜λ§Œ true → μ˜€λ¦„μ°¨μˆœ λ˜λŠ” λ‚΄λ¦Όμ°¨μˆœ

 λ‘˜ λ‹€ false → λͺ¨λ‘ 같은 숫자 → μ„žμž„


βœ… ν•œκΈ€ μ½”λ”©

// μ˜€λ¦„μ°¨μˆœ or λ‚΄λ¦Όμ°¨μˆœ or μ„žμž„?
// μ˜€λ¦„μ°¨μˆœ or λ‚΄λ¦Όμ°¨μˆœ λ‘˜λ‹€ 아닐 경우 >> μ„žμž„

// n개의 μˆ˜κ°€ μ£Όμ–΄μ§€λ©΄ >> μœ„ 3κ°œμ€‘ ν•˜λ‚˜λ₯Ό νŒλ‹¨ν•˜κ³  좜λ ₯
// λͺ¨λ‘ κ°€νŠΌ μˆ˜κ°€ μž…λ ₯일 경우 >> μ„žμž„

// μž…λ ₯값을 λ°›κΈ° μœ„ν•œ μŠ€μΊλ„ˆ μ„ μ–Έ

// λͺ‡κ°œ μž…λ ₯받을지 μ„ μ–Έ
	
// μž…λ ₯받은 수 배열에 μ €μž₯

// λ°°μ—΄μ˜ 길이만큼 μˆœνšŒν•˜λŠ” 반볡문
// λ°°μ—΄μ˜ κΈΈμ΄λŠ” μ •ν•΄μ ΈμžˆκΈ° λ•Œλ¬Έμ— Whileλ¬Έ λŒ€μ‹  Forλ¬Έ μ‚¬μš©
// 배열에 넣을 κ°’ μž…λ ₯ λ°›κΈ°

// μ˜€λ¦„μ°¨μˆœ ν™•μΈν•˜λŠ” booleanκ°’ μ„€μ •
// λ‚΄λ¦Όμ°¨μˆœ ν™•μΈν•˜λŠ” booleanκ°’ μ„€μ •

// λ°°μ—΄μ˜ 길이만큼 λ°˜λ³΅ν•˜λŠ” Forλ¬Έ → μœ„ λ°°μ—΄μ˜ κ°’λ“€ μž…λ ₯λ°›λŠ” μ΄μœ μ™€ 반볡문 μ‚¬μš©ν•˜λŠ” 이유 동일
// 비ꡐ할 인덱슀 λ²ˆν˜Έκ°€ λ°°μ—΄μ˜ 길이와 μΌμΉ˜ν•˜λ‹€λ©΄
// νƒˆμΆœ

// λ§Œμ•½ μ•žμ˜ μΈλ±μŠ€κ°€ λ’€μ˜ μΈλ±μŠ€λ³΄λ‹€ μž‘λ‹€λ©΄
	// μ˜€λ¦„μ°¨μˆœ boolean 값을 true둜 λ³€κ²½
// λ§Œμ•½ μ•žμ˜ μΈλ±μŠ€κ°€ λ’€μ˜ μΈλ±μŠ€λ³΄λ‹€ 크닀면
	// λ‚΄λ¦Όμ°¨μˆœ boolean 값을 true둜 λ³€κ²½
// λ§Œμ•½ 비ꡐ할 값이 같은 값이라면
	// νƒˆμΆœ

// λ§Œμ•½ μ˜€λ¦„μ°¨μˆœκ³Ό λ‚΄λ¦Όμ°¨μˆœ boolean 값이 λͺ¨λ‘ TRUE라면
	// μ„žμž„ 좜λ ₯
// λ§Œμ•½ μ˜€λ¦„μ°¨μˆœλ§Œ TRUE라면
	// μ˜€λ¦„μ°¨μˆœ 좜λ ₯
// λ§Œμ•½ λ‚΄λ¦Όμ°¨μˆœλ§Œ TRUE라면
	// λ‚΄λ¦Όμ°¨μˆœ 좜λ ₯
// κ·Έ μ™Έμ˜ κ²½μš°μ—λŠ” λͺ¨λ‘
	// μ„žμž„ 좜λ ₯

βœ… μ½”λ”©

import java.util.Scanner;

public class Main5 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int arrLength = sc.nextInt();
		int[] array = new int[arrLength];

		for (int i = 0; i < arrLength; i++) {
			array[i] = sc.nextInt();
		}

		boolean ifUp = false;
		boolean ifDown = false;

		for (int i = 0; i < array.length - 1; i++) {
			if (array[i] < array[i + 1]) {
				ifUp = true;
			} else if (array[i] > array[i + 1]) {
				ifDown = true;
			}
		}

		if (ifUp && ifDown) {
			System.out.println("μ„žμž„");
		} else if (ifUp) {
			System.out.println("μ˜€λ¦„μ°¨μˆœ");
		} else if (ifDown) {
			System.out.println("λ‚΄λ¦Όμ°¨μˆœ");
		} else {
			System.out.println("μ„žμž„");
		}
	}
}

πŸ’‘ ν•΄μ„€

 

1️⃣ 핡심은 μ˜€λ¦„/λ‚΄λ¦Ό μ—¬λΆ€λ₯Ό 각각의 boolean κ°’μœΌλ‘œ κ΅¬λΆ„ν•œ 것

2️⃣ 같은 μˆ˜λŠ” νŒλ³„μ— 영ν–₯을 μ£Όμ§€ μ•ŠμœΌλ―€λ‘œ λ”°λ‘œ μ²˜λ¦¬ν•  ν•„μš” μ—†μŒ

3️⃣ 반볡문 λ§ˆμ§€λ§‰μ— 두 ν”Œλž˜κ·Έκ°€ λͺ¨λ‘ false인 경우 → μ „λΆ€ 같은 숫자 → "μ„žμž„"

4️⃣ λΆ„κΈ° 처리λ₯Ό μ •ν™•νžˆ ꡬ성해 μ£Όμ–΄μ§„ 3κ°€μ§€ κ²°κ³Ό 외에 λ‹€λ₯Έ 좜λ ₯이 μ ˆλŒ€ 없도둝 κ΅¬ν˜„ν•œ 점이 μ•ˆμ •μ 