π•ƒπ•¦π•„π•šπ•£

γ€ŒβŒ¨οΈα΄„s」PS/λ°±μ€€_κΈ°ν•˜

[Baekjoon/λ°±μ€€][3009][C/C++] λ„€ 번째 점

by λ£¨λ°€π•ƒπ•¦π•„π•šπ•£2023. 1. 30.
728x90
λ°˜μ‘ν˜•
γ€Žλͺ©μ°¨γ€
0. κ°œμš”

1. 문제
2. 풀이
3. μ½”λ“œ

0. κ°œμš”

κ°„λ‹¨ν•œ κΈ°ν•˜ν•™λ¬Έμ œ. μ„œλ‘œ λ‹€λ₯Έ 2κ°€μ§€μ˜ ν’€μ΄λ‘œ 문제λ₯Ό ν’€μ–΄λ΄€λ‹€.

1. 문제

https://www.acmicpc.net/problem/3009

 

3009번: λ„€ 번째 점

μ„Έ 점이 μ£Όμ–΄μ‘Œμ„ λ•Œ, 좕에 ν‰ν–‰ν•œ μ§μ‚¬κ°ν˜•μ„ λ§Œλ“€κΈ° μœ„ν•΄μ„œ ν•„μš”ν•œ λ„€ 번째 점을 μ°ΎλŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€.

www.acmicpc.net

[문제]

μ„Έ 점이 μ£Όμ–΄μ‘Œμ„ λ•Œ, 좕에 ν‰ν–‰ν•œ μ§μ‚¬κ°ν˜•μ„ λ§Œλ“€κΈ° μœ„ν•΄μ„œ ν•„μš”ν•œ λ„€ 번째 점을 μ°ΎλŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€.

[μž…λ ₯]

μ„Έ 점의 μ’Œν‘œκ°€ ν•œ 쀄에 ν•˜λ‚˜μ”© 주어진닀. μ’Œν‘œλŠ” 1보닀 ν¬κ±°λ‚˜ κ°™κ³ , 1000보닀 μž‘κ±°λ‚˜ 같은 μ •μˆ˜μ΄λ‹€.

[좜λ ₯]

μ§μ‚¬κ°ν˜•μ˜ λ„€ 번째 점의 μ’Œν‘œλ₯Ό 좜λ ₯ν•œλ‹€.

[예제 μž…λ ₯ 1]

5 5
5 7
7 5

[예제 좜λ ₯ 1]

7 7

[예제 μž…λ ₯ 2]

30 20
10 10
10 20

[예제 좜λ ₯ 2]

30 10

2. 풀이

μ„Έ 점이 μ£Όμ–΄μ‘Œμ„ λ•Œ, xμ’Œν‘œγ†yμ’Œν‘œ 각각은 κ·Έ 값이 2κ°œμ”© μ„œλ‘œ κ°™κ³ , λ‚˜λ¨Έμ§€ ν•˜λ‚˜μ˜ μ’Œν‘œλŠ” κ·Έ 값이 λ‹€λ₯΄λ‹€.

μ΄λ•Œ, λ‚˜λ¨Έμ§€ ν•˜λ‚˜μ˜ μ’Œν‘œμ— ν•΄λ‹Ήν•˜λŠ” 값이 λ„€ 번째 점에 ν•΄λ‹Ήν•˜λŠ” xμ’Œν‘œ, yμ’Œν‘œμ΄λ―€λ‘œ, ν•΄λ‹Ή 점의 μ’Œν‘œλ₯Ό 좜λ ₯ν•˜λ©΄ λœλ‹€.

 

[풀이1]

λ‹¨μˆœ 쑰건문 풀이.

 

[풀이2]

xμ’Œν‘œμ™€ yμ’Œν‘œμ˜ 값에 λ”°λ₯Έ 개수λ₯Ό μ…€ 수 μžˆλŠ” λ°°μ—΄ countλ₯Ό μ„ μ–Έν•œ λ’€, μ’Œν‘œλ₯Ό μž…λ ₯λ°›μ•„ 각각의 개수λ₯Ό μ„Όλ‹€. μ΄λ•Œ, λ°°μ—΄μ˜ 값이 2이면 ν•΄λ‹Ή 값이 μ€‘λ³΅λœλ‹€λŠ” 뜻이고, λ°°μ—΄μ˜ 값이 1이면 ν•΄λ‹Ή 값이 μœ μΌν•˜λ‹€λŠ” λœ»μ΄λ―€λ‘œ, λ°°μ—΄μ˜ 값이 1인 λ°°μ—΄μ˜ 인덱슀 값을 좜λ ₯ν•΄μ£Όλ©΄ λœλ‹€.

3. μ½”λ“œ

#pragma warning(disable:4996)
#include <stdio.h>

typedef struct {
	int x;
	int y;
}Point;

int main(int argc, char* argv[]) {
	Point pos[3];

	for (int i = 0; i < 3; i++)
		scanf("%d %d", &pos[i].x, &pos[i].y);

	if (pos[0].x == pos[1].x)
		printf("%d ", pos[2].x);
	else if(pos[0].x == pos[2].x)
		printf("%d ", pos[1].x);
	else
		printf("%d ", pos[0].x);

	if (pos[0].y == pos[1].y)
		printf("%d", pos[2].y);
	else if (pos[0].y == pos[2].y)
		printf("%d", pos[1].y);
	else
		printf("%d", pos[0].y);

	return 0;
}
#pragma warning(disable:4996)
#include <stdio.h>

typedef struct {
	int x;
	int y;
}Point;

int main(int argc, char* argv[]) {
	Point pos;
	Point count[1001] = {};

	for (int i = 0; i < 3; i++) {
		scanf("%d %d", &pos.x, &pos.y);
		count[pos.x].x++; count[pos.y].y++;
	}

	for (int i = 1; i <= 1000; i++)
		if (count[i].x == 1)
			printf("%d ", i);

	for (int i = 1; i <= 1000; i++)
		if (count[i].y == 1)
			printf("%d", i);
		
	return 0;
}
728x90
λ°˜μ‘ν˜•