[λΈ”λ‘œκ·Έ 이전]

2022.03.22

 

πŸ’ 1008번

μ—„μ²­ μ‰¬μšΈ 쀄 μ•Œμ•˜λŠ”λ° 계속 ν‹€λ Έ........

μ€‘μš”ν•œ 건 μƒλŒ€μ˜€μ°¨κ°€ 10^-9 μ΄ν•˜μ΄λ©΄ μ •λ‹΅μ΄λΌλŠ” λ¬Έκ΅¬μ˜€λ‹€.

계속 float둜 λ‚˜λˆ„μ—ˆμ„ λ•ŒλŠ” μ˜€λ‹΅μ΄λΌκ³  λ‚˜μ™”λ‹€.

μ—¬κΈ°μ„œ λ‚˜μ˜¨ κ°œλ…μ΄ λ‹€μŒμ΄λ‹€.

​

πŸŽ€'뢀동 μ†Œμˆ˜μ (floating point)'

: μ†Œμˆ˜λ₯Ό ν‘œν˜„ν•˜λŠ” 방법 쀑 ν•˜λ‚˜.

μ»΄ν“¨ν„°μ—μ„œ μ†Œμˆ˜λ₯Ό ν‘œν˜„ν•˜λ €λ©΄ μ—¬λŸ¬κ°€μ§€ 방법이 μžˆλŠ”λ°, λ©”λͺ¨λ¦¬κ°€ μ œν•œμ μ΄λ‹€ λ³΄λ‹ˆ μ •ν™•ν•œ μ†Œμˆ˜ 값이 ν‘œν˜„λ  리 μ—†λ‹€....

ex) 1/3을 κ³„μ‚°ν•˜κ³ μž ν•  λ•Œ μžλ£Œν˜•μ΄ float(4byte) -> 였차 λ²”μœ„κ°€ 10^-7 μ „ν›„

μžλ£Œν˜•μ΄ double(8byte) -> 였차 λ²”μœ„κ°€ 10^-15 μ „ν›„

μžλ£Œν˜•μ΄ long double(16byte)- 이건 μœˆλ„μš°λ‚˜ λΉ„μŠ€λ₯Ό μ‚¬μš©ν•˜λ©΄ long double도 8λ°”μ΄νŠΈμ΄λ‹€. 단 μš°λΆ„νˆ¬λŠ” 16λ°”μ΄νŠΈμ΄λ‹€.

​

즉, double둜 ν•΄μ•Ό 정닡이 λ‚˜μ™”λ‹€....γ… γ…œ

​

+ double 좜λ ₯ %f λ˜λŠ” %lf

 

#include <stdio.h>

int main() {
	int A, B;
	double div;
	
	scanf("%d %d", &A, &B);
	div = (double)A / (double)B;
	printf("%.15lf\n", div);

	return 0;
}

πŸ’ 1009번

였였 κ·Έλž˜λ‘ 빨리 ν‘Ό λ“― γ…Žγ…Ž

μ§€μˆ˜ν•¨μˆ˜κ°€ λ“€μ–΄κ°€μ„œ μ²˜μŒμ—λŠ” math.hλ₯Ό μΆ”κ°€ν•˜μ—¬ pow()ν•¨μˆ˜λ₯Ό μ‚¬μš©ν–ˆλ‹€. ν•˜μ§€λ§Œ 값이 λ„ˆλ¬΄ 컀지닀 λ³΄λ‹ˆ μ œλŒ€λ‘œ 계산을 λͺ»ν–ˆλ‹€.

λ”°λΌμ„œ μ–΄μ§œν”Ό ν•„μš”ν•œ λ°μ΄ν„°λŠ” μ§€μˆ˜ν•¨μˆ˜ 결과의 1의 자리 수 μ΄λ―€λ‘œ, κ·Έλƒ₯ 1의 자리만 κ³„μ‚°ν•˜λŠ” for문을 μΆ”κ°€ν–ˆλ‹€. 잘 μž‘λ™ν•œλ‹€ γ…Žγ…Ž

#include <stdio.h>

int main() {
	int T, a, b;

	scanf("%d", &T);

	for (int i = 0;i < T;i++) {
		int com=1;
		scanf("%d %d", &a,&b);

		for (int j = 0;j < b;j++) {
			com *= a;
			com = com % 10;
		}
		if (com == 0)
			printf("10\n");
		else
			printf("%d\n", com);
	}

	return 0;
}

​


πŸ’ 1076번

λ§žμ•˜λŠ”λ° λ„ˆλ¬΄ μ°μ°ν•˜λ‹€.... λ¨Όκ°€ 더 쒋은 방법이 μžˆμ„ κ±° 같은데...

λ¨Όμ € enum으둜 λ­”κ°€ ν•΄λ³Όλ €κ³  ν–ˆλ‹€κ°€ string을 λ°›μ•„μ„œ enum λ³€μˆ˜μ™€ 비ꡐ할 수 μ—†μ–΄μ„œ μ‹€νŒ¨ν–ˆλ‹€.

κ·Έλž˜μ„œ μ•„λž˜μ™€ 같이 μž‘μ„±ν–ˆλŠ”λ°.... λ”λŸ½λ‹€.

#include <stdio.h>
#include <string.h>
#include <math.h>

int main() {
	char a[10];
	int val_a;
	long long val=0;

	for (int i = 0;i < 3;i++) {
		scanf("%s", a);
		if (!(strcmp(a, "black")))
			val_a = 0;
		else if (!(strcmp(a, "brown")))
			val_a = 1;
		else if (!(strcmp(a, "red")))
			val_a = 2;
		else if (!(strcmp(a, "orange")))
			val_a = 3;
		else if (!(strcmp(a, "yellow")))
			val_a = 4;
		else if (!(strcmp(a, "green")))
			val_a = 5;
		else if (!(strcmp(a, "blue")))
			val_a = 6;
		else if (!(strcmp(a, "violet")))
			val_a = 7;
		else if (!(strcmp(a, "grey")))
			val_a = 8;
		else if (!(strcmp(a, "white")))
			val_a = 9;

		switch (i) {
		case 0:
			val = 10 * val_a;
			break;
		case 1:
			val += val_a;
			break;
		case 2:
			val *= (int)pow(10, val_a);
			break;
		}

	}

	printf("%lld\n", val);
	return 0;
}

참고둜 결과값이 μ»€μ„œ long long μžλ£Œν˜•μ„ μ‚¬μš©ν•΄μ•Ό μ •λ‹΅μ²˜λ¦¬ λœλ‹€.

μ•½κ°„μ˜ 검색을 ν•΄λ³΄μ•˜λŠ”λ° c++ 둜 μž‘μ„±ν•˜λ©΄ μ½”λ“œκ°€ κΉ”λ”ν•˜λ‹€. cμ—λŠ” string μžλ£Œν˜•μ΄ μ—†κΈ° λ•Œλ¬Έκ°™λ‹€.

πŸ€c++을 빨리 λ°°μ›Œμ•Όκ²Ÿλ‹€......γ… γ…œγ…œ


πŸ’ 1010번

쑰합을 μ΄μš©ν•œ λ¬Έμ œμ΄λ‹€.

 

μœ„ 식을 μ‚¬μš©ν•˜μ—¬ κ΅¬ν˜„ν•΄λ³΄μ•˜λ‹€.

λΆ„λͺ¨, λΆ„μžλ₯Ό λ”°λ‘œ λ”°λ‘œ κ³„μ‚°ν•˜μ—¬ λ‚˜λˆ„μ—ˆμ§€λ§Œ, μž…λ ₯이 λ„ˆλ¬΄ μ»€μ„œ long long μžλ£Œν˜•μœΌλ‘œλ„ μ•ˆλœλ‹€.

​

πŸŽ€λ”°.라.μ„œ μ•„λž˜κ°€ κ°™μŒμ„ μ μš©ν–ˆλ‹€.

​​

μœ„λ₯Ό κ΅¬ν˜„ν•˜κΈ° μœ„ν•΄ if (N > M / 2) N = M - N; 을 μΆ”κ°€ν–ˆλ‹€.

λ©”λͺ¨λ¦¬ λΆ€μ‘± ν˜„μƒμ΄ ν•΄κ²°λ˜μ—ˆλ‹€~~!~!~!~

#include <stdio.h>

int main() {
	int T, N, M;

	scanf("%d", &T);

	for (int i = 0;i < T;i++) {
		long long bridge, tmp1 = 1, tmp2 = 1;
		scanf("%d %d", &N, &M);

		if (N == M)
			bridge = 1;
		else {
			if (N > M / 2)
				N = M - N;
			int tmp3 = M - N;
			for (M;M > tmp3;M--)
				tmp1 *= M;
			for (N;N > 0;N--)
				tmp2 *= N;
			bridge = tmp1 / tmp2;
		}

		printf("%d\n", bridge);
	}

	return 0;
}

'🧩boj' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[boj] λ°±μ€€ 10699  (0) 2025.02.20
[boj] λ°±μ€€λ¦΄λ ˆμ΄  (0) 2025.02.20
[boj] λ°±μ€€λ¦΄λ ˆμ΄  (0) 2025.02.20
[boj] λ°±μ€€λ¦΄λ ˆμ΄  (0) 2025.02.20
[boj] λ°±μ€€λ¦΄λ ˆμ΄  (0) 2025.02.20

+ Recent posts