😎 κ³΅λΆ€ν•˜λŠ” μ§•μ§•μ•ŒνŒŒμΉ΄λŠ” μ²˜μŒμ΄μ§€?

[BAEKJOON C++] 2484_μ£Όμ‚¬μœ„ λ„€κ°œ λ³Έλ¬Έ

πŸ¦₯ μ½”ν…Œ/BAEKJOON

[BAEKJOON C++] 2484_μ£Όμ‚¬μœ„ λ„€κ°œ

μ§•μ§•μ•ŒνŒŒμΉ΄ 2023. 7. 25. 17:49
728x90
λ°˜μ‘ν˜•
1μ—μ„œλΆ€ν„° 6κΉŒμ§€μ˜ λˆˆμ„ 가진 4개의 μ£Όμ‚¬μœ„λ₯Ό λ˜μ Έμ„œ 
λ‹€μŒκ³Ό κ°™μ€ κ·œμΉ™μ— λ”°λΌ μƒκΈˆμ„ λ°›λŠ” κ²Œμž„이 μžˆλ‹€.

같은 λˆˆμ΄ 4κ°œκ°€ λ‚˜μ˜€λ©΄ 50,000원+(같은 λˆˆ)×5,000μ›μ˜ μƒκΈˆμ„ λ°›κ²Œ λœλ‹€.
같은 λˆˆμ΄ 3개만 λ‚˜μ˜€λ©΄ 10,000원+(3κ°œκ°€ λ‚˜μ˜¨ λˆˆ)×1,000μ›μ˜ μƒκΈˆμ„ λ°›κ²Œ λœλ‹€.
같은 λˆˆμ΄ 2κ°œμ”© λ‘ μŒμ΄ λ‚˜μ˜€λŠ” κ²½μš°μ—λŠ” 2,000원+(2κ°œκ°€ λ‚˜μ˜¨ λˆˆ)×500원+(또 λ‹€λ₯Έ 2κ°œκ°€ λ‚˜μ˜¨ λˆˆ)×500μ›μ˜ μƒκΈˆμ„ λ°›κ²Œ λœλ‹€.
같은 λˆˆμ΄ 2개만 λ‚˜μ˜€λŠ” κ²½μš°μ—λŠ” 1,000원+(같은 λˆˆ)×100μ›μ˜ μƒκΈˆμ„ λ°›κ²Œ λœλ‹€.
λͺ¨λ‘ λ‹€λ₯Έ λˆˆμ΄ λ‚˜μ˜€λŠ” κ²½μš°μ—λŠ” (κ·Έ μ€‘ κ°€μž₯ ν° λˆˆ)×100μ›μ˜ μƒκΈˆμ„ λ°›κ²Œ λœλ‹€.

예λ₯Ό λ“€μ–΄, 4개의 λˆˆμ΄ 3, 3, 3, 3으둜 μ£Όμ–΄μ§€λ©΄ 50,000+3×5,000으둜 κ³„μ‚°λ˜μ–΄ 65,000μ›μ˜ μƒκΈˆ
4개의 λˆˆμ΄ 3, 3, 6, 3으둜 μ£Όμ–΄μ§€λ©΄ μƒκΈˆμ€ 10,000+3×1,000으둜 κ³„μ‚°λ˜μ–΄ 13,000원을 λ°›κ²Œ λœλ‹€. 
또 4개의 λˆˆμ΄ 2, 2, 6, 6으둜 μ£Όμ–΄μ§€λ©΄ 2,000+2×500+6×500으둜 κ³„μ‚°λ˜μ–΄ 6,000원을 λ°›κ²Œ λœλ‹€.
4개의 λˆˆμ΄ 6, 2, 1, 6으둜 μ£Όμ–΄μ§€λ©΄ 1,000+6×100으둜 κ³„μ‚°λ˜μ–΄ 1,600원을 λ°›κ²Œ λœλ‹€. 
4개의 λˆˆμ΄ 6, 2, 1, 5둜 μ£Όμ–΄μ§€λ©΄ κ·Έ μ€‘ κ°€μž₯ ν° κ°’이 6μ΄λ―€λ‘œ 6×100으둜 κ³„μ‚°λ˜μ–΄ 600원을 μƒκΈˆμœΌλ‘œ λ°›κ²Œ λœλ‹€.

N(1 ≤ N ≤ 1,000)λͺ…이 μ£Όμ‚¬μœ„ κ²Œμž„에 μ°Έμ—¬ν•˜μ˜€μ„ λ•Œ, 
κ°€μž₯ λ§Žμ€ μƒκΈˆμ„ λ°›μ€ μ‚¬λžŒμ˜ μƒκΈˆμ„ μΆœλ ₯ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€.

μž…λ ₯
첫째 μ€„μ—λŠ” μ°Έμ—¬ν•˜λŠ” μ‚¬λžŒ μˆ˜ N이 μ£Όμ–΄μ§€κ³  
κ·Έ λ‹€μŒ μ€„λΆ€ν„° N개의 μ€„에 μ‚¬λžŒλ“€μ΄ μ£Όμ‚¬μœ„λ₯Ό λ˜μ§„ 4개의 λˆˆμ΄ λΉˆμΉΈμ„ μ‚¬μ΄μ— λ‘κ³  κ°κ° μ£Όμ–΄μ§„λ‹€.

좜λ ₯
첫째 쀄에 κ°€μž₯ λ§Žμ€ μƒκΈˆμ„ 받은 μ‚¬λžŒμ˜ μƒκΈˆμ„ 좜λ ₯ν•œλ‹€.
// [2484] μ£Όμ‚¬μœ„ λ„€κ°œ

/*
1μ—μ„œλΆ€ν„° 6κΉŒμ§€μ˜ λˆˆμ„ 가진 4개의 μ£Όμ‚¬μœ„λ₯Ό λ˜μ Έμ„œ 
λ‹€μŒκ³Ό 같은 κ·œμΉ™μ— 따라 μƒκΈˆμ„ λ°›λŠ” κ²Œμž„μ΄ μžˆλ‹€.

같은 눈이 4κ°œκ°€ λ‚˜μ˜€λ©΄ 50,000원+(같은 눈)×5,000μ›μ˜ μƒκΈˆμ„ λ°›κ²Œ λœλ‹€.
같은 눈이 3개만 λ‚˜μ˜€λ©΄ 10,000원+(3κ°œκ°€ λ‚˜μ˜¨ 눈)×1,000μ›μ˜ μƒκΈˆμ„ λ°›κ²Œ λœλ‹€.
같은 눈이 2κ°œμ”© 두 쌍이 λ‚˜μ˜€λŠ” κ²½μš°μ—λŠ” 2,000원+(2κ°œκ°€ λ‚˜μ˜¨ 눈)×500원+(또 λ‹€λ₯Έ 2κ°œκ°€ λ‚˜μ˜¨ 눈)×500μ›μ˜ μƒκΈˆμ„ λ°›κ²Œ λœλ‹€.
같은 눈이 2개만 λ‚˜μ˜€λŠ” κ²½μš°μ—λŠ” 1,000원+(같은 눈)×100μ›μ˜ μƒκΈˆμ„ λ°›κ²Œ λœλ‹€.
λͺ¨λ‘ λ‹€λ₯Έ 눈이 λ‚˜μ˜€λŠ” κ²½μš°μ—λŠ” (κ·Έ 쀑 κ°€μž₯ 큰 눈)×100μ›μ˜ μƒκΈˆμ„ λ°›κ²Œ λœλ‹€.

예λ₯Ό λ“€μ–΄, 4개의 눈이 3, 3, 3, 3으둜 주어지면 50,000+3×5,000으둜 κ³„μ‚°λ˜μ–΄ 65,000μ›μ˜ μƒκΈˆ
4개의 눈이 3, 3, 6, 3으둜 주어지면 μƒκΈˆμ€ 10,000+3×1,000으둜 κ³„μ‚°λ˜μ–΄ 13,000원을 λ°›κ²Œ λœλ‹€. 
또 4개의 눈이 2, 2, 6, 6으둜 주어지면 2,000+2×500+6×500으둜 κ³„μ‚°λ˜μ–΄ 6,000원을 λ°›κ²Œ λœλ‹€.
4개의 눈이 6, 2, 1, 6으둜 주어지면 1,000+6×100으둜 κ³„μ‚°λ˜μ–΄ 1,600원을 λ°›κ²Œ λœλ‹€. 
4개의 눈이 6, 2, 1, 5둜 주어지면 κ·Έ 쀑 κ°€μž₯ 큰 값이 6μ΄λ―€λ‘œ 6×100으둜 κ³„μ‚°λ˜μ–΄ 600원을 μƒκΈˆμœΌλ‘œ λ°›κ²Œ λœλ‹€.

N(1 ≤ N ≤ 1,000)λͺ…이 μ£Όμ‚¬μœ„ κ²Œμž„μ— μ°Έμ—¬ν•˜μ˜€μ„ λ•Œ, 
κ°€μž₯ λ§Žμ€ μƒκΈˆμ„ 받은 μ‚¬λžŒμ˜ μƒκΈˆμ„ 좜λ ₯ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€.

μž…λ ₯
첫째 μ€„μ—λŠ” μ°Έμ—¬ν•˜λŠ” μ‚¬λžŒ 수 N이 주어지고 
κ·Έ λ‹€μŒ 쀄뢀터 N개의 쀄에 μ‚¬λžŒλ“€μ΄ μ£Όμ‚¬μœ„λ₯Ό λ˜μ§„ 4개의 눈이 λΉˆμΉΈμ„ 사이에 두고 각각 주어진닀.

좜λ ₯
첫째 쀄에 κ°€μž₯ λ§Žμ€ μƒκΈˆμ„ 받은 μ‚¬λžŒμ˜ μƒκΈˆμ„ 좜λ ₯ν•œλ‹€.
*/

#define _CRT_SECURE_NO_WARNINGS
// ν‘œμ€€ μŠ€νŠΈλ¦Όμ—μ„œ 읽기 및 μ“°κΈ°λ₯Ό μ œμ–΄ν•˜λŠ” 개체λ₯Ό μ„ μ–Έ
#include <iostream>
#include <algorithm>    // find
#include <string>
#include <cmath>        // abs
#include <vector>
using namespace std;

int N;
vector<int> result;
int a, b;

// 문제의 쑰건쀑 μ–΄λŠ 번호 쑰건에 ν•΄λ‹Ήν•˜λŠ”μ§€ νŒλ³„
int f(int cnt[]) {
	vector<int> temp;

	for (int i = 1; i <= 6; i++) {
		if (cnt[i] > 0)
			temp.push_back(i);

		// 같은 눈이 4개
		if (cnt[i] == 4) {
			a = i;
			return 1;
		}
		// 같은 눈이 3개
		else if (cnt[i] == 3) {
			a = i;
			return 2;
		}
		// 같은 눈이 2개
		else if (cnt[i] == 2) {
			for (int j = i + 1; j <= 6; j++) {
				// 같은 눈이 2κ°œμ”© 두 쌍
				if (cnt[j] == 2) {
					a = i;
					b = j;
					return 3;
				}
			}
			// 같은 눈이 2개
			a = i;
			return 4;
		}
	}
	// λͺ¨λ‘ λ‹€λ₯Έ 눈
	sort(temp.begin(), temp.end());
	a = temp[temp.size() - 1];
	return 5;
}

int main() {
	scanf("%d", &N);
	result.resize(N);

	for (int i = 0; i < N; i++) {
		// μ£Όμ‚¬μœ„ 번호(1 ~ 6)λ‹Ή μ–Όλ§ˆλ‚˜ λ‚˜μ™”λŠ”μ§€ μΉ΄μš΄νŠΈν•˜λŠ” λ°°μ—΄
		int cnt[7] = { 0 };

		int dice[4];

		for (int j = 0; j < 4; j++) {
			scanf("%d", &dice[j]);
			cnt[dice[j]]++;
		}

		int condition = f(cnt);

		if (condition == 1)
			result[i] = 50000 + a * 5000;
		else if (condition == 2)
			result[i] = 10000 + a * 1000;
		else if (condition == 3)
			result[i] = 2000 + a * 500 + b * 500;
		else if (condition == 4)
			result[i] = 1000 + a * 100;
		else
			result[i] = a * 100;
	}

	sort(result.begin(), result.end());

	printf("%d\n", result[N - 1]);

	return 0;
}

728x90
λ°˜μ‘ν˜•
Comments