[BOJ/๋ฐฑ์ค€] 20041 Escaping - ์ž๋ฐ”,ํŒŒ์ด์ฌ

2021. 10. 8. 18:27ยท๐Ÿ’ป ์•Œ๊ณ ๋ฆฌ์ฆ˜/PS

๋ฌธ์ œ

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

 

20041๋ฒˆ: Escaping

์ฒซ ๋ฒˆ์งธ ์ค„์—๋Š” ๊ฒฝ์ฐฐ์˜ ์ˆ˜ N์ด ์ฃผ์–ด์ง„๋‹ค. ๋‹จ, 1 ≤ N ≤ 500,000์ด๋‹ค. ๊ทธ ๋‹ค์Œ N ๊ฐœ์˜ ์ค„์—๋Š” ๊ฐ ๊ฒฝ์ฐฐ์˜ ์ดˆ๊ธฐ ์œ„์น˜์˜ ์ขŒํ‘œ (xi, yi)๊ฐ€ ๊ณต๋ฐฑ์„ ์‚ฌ์ด์— ๋‘๊ณ  ์ฃผ์–ด์ง„๋‹ค. ๋‹ค์Œ ์ค„์—๋Š” ๋„๋‘‘์˜ ์ดˆ๊ธฐ ์œ„์น˜์˜ ์ขŒ

www.acmicpc.net

icpc 2020 ์˜ˆ์„  F๋ฒˆ ๋ฌธ์ œ๋กœ

๋„๋‘‘๊ณผ ๊ฒฝ์ฐฐ์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ๋„๋‘‘์ด ๊ฒฝ์ฐฐ์—๊ฒŒ์„œ ํƒˆ์ถœํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํŒ๋‹จํ•˜๋Š” ๋ฌธ์ œ

 

๋ฌธ์ œํ’€์ด

๋„๋‘‘์ด ๊ฒฝ์ฐฐ์—๊ฒŒ์„œ ๊ฐ€์žฅ ๋ฉ€๋ฆฌ ๋‹ฌ์•„๋‚  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์€ 4 ๋ฐฉํ–ฅ ์ค‘ ํ•œ ๋ฐฉํ–ฅ์œผ๋กœ ์ง์ง„ ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

๊ฐ ๊ฒฝ์ฐฐ์— ๋Œ€ํ•ด์„œ ์œ„, ์•„๋ž˜, ์™ผ์ชฝ, ์˜ค๋ฅธ์ชฝ ๋ฐฉํ–ฅ์„ ํƒ์ƒ‰ํ•œ๋‹ค.

ํ•œ ๋ฒˆ์ด๋ผ๋„ ํƒˆ์ถœํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ดˆ๊ธฐ ์กฐ๊ฑด์—์„œ ํƒˆ์ถœ ๊ฐ€๋Šฅํ•œ ๊ฒƒ

  ex) ์œ„๋กœ ์›€์ง์ผ ๋•Œ.

    - ๊ฒฝ์ฐฐ์ด ๋„๋‘‘๋ณด๋‹ค ๋ฐ‘์— ์žˆ์œผ๋ฉด ํƒˆ์ถœ ๊ฐ€๋Šฅ

    - ๊ฒฝ์ฐฐ์ด ๋„๋‘‘๋ณด๋‹ค ์œ„์— ์žˆ๊ณ , ๊ทธ ๊ฑฐ๋ฆฌ๊ฐ€ ์ขŒ์šฐ๋กœ ๋–จ์–ด์ง„ ๊ฑฐ๋ฆฌ๋ณด๋‹ค ๊ธธ๋ฉด ํƒˆ์ถœ ๋ถˆ๊ฐ€๋Šฅ

 

 

 

์ฝ”๋“œ

1.java

import java.io.*;
import java.util.StringTokenizer;
public class Main {
	static int n;
	static int police[][],x,y;
	
	public static boolean find(int move) { //๋„๋‘‘์ด ์›€์ง์ด๋Š” ์œ„์น˜๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ
		for(int i=0;i<n;i++) {
			if(move==0) { //์œ„๋กœ
				if(police[i][1]<=y) //ํƒˆ์ถœ๊ฐ€๋Šฅ
					continue;
				int temp=police[i][0]>x?police[i][0]-x:x-police[i][0];
				if((police[i][1]-y)>=temp) //์žกํž˜
					return false;
			}
			else if(move==1) {//์•„๋ž˜
				if(police[i][1]>=y)
					continue;
				int temp=police[i][0]>x?police[i][0]-x:x-police[i][0];
				if((y-police[i][1])>=temp)
					return false;
			}
			else if(move==2) { //์™ผ์ชฝ
				if(police[i][0]>=x)
					continue;
				int temp=police[i][1]>y?police[i][1]-y:y-police[i][1];
				if((x-police[i][0])>=temp)
					return false;
			}
			else if(move==3){//์˜ค๋ฅธ์ชฝ
				if(police[i][0]<=x)
					continue;
				int temp=police[i][1]>y?police[i][1]-y:y-police[i][1];
				if((police[i][0]-x)>=temp)
					return false;
			}
		}
		return true;
	}
	
	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		BufferedReader bf=new BufferedReader(new InputStreamReader(System.in));
		n=Integer.parseInt(bf.readLine());
		police=new int [n][2];
		for(int i=0;i<n;i++) {
			StringTokenizer st1=new StringTokenizer(bf.readLine());
			police[i][0]=Integer.parseInt(st1.nextToken());
			police[i][1]=Integer.parseInt(st1.nextToken());
		}
		
		StringTokenizer st=new StringTokenizer(bf.readLine());
		x=Integer.parseInt(st.nextToken());
		y=Integer.parseInt(st.nextToken());
		boolean result = false;
		for(int i=0;i<4;i++) {
			result=find(i);
			if(result==true)
				break;
		}
		
		if (result==true)
			System.out.println("YES");
		else
			System.out.println("NO");
		
	}

}

 

2. ํŒŒ์ด์ฌ

n=int(input())
def find(move):
    for i in range(n):
        if move==0:
            if police[i][1]<=y:
                continue
            if police[i][1]-y>=abs(police[i][0]-x):
                return False
        elif move==1:
            if police[i][1]>=y:
                continue
            if y-police[i][1]>=abs(police[i][0]-x):
                return False
        elif move==2:
            if police[i][0]>=x:
                continue
            if x-police[i][0]>=abs(police[i][1]-y):
                return False
        else:
            if police[i][0]<=x:
                continue
            if police[i][0]-x>=abs(police[i][1]-y):
                return False
    return True

police=[]
for i in range(n):
    police.append(list(map(int,input().split())))
x,y=map(int,input().split())

for i in range(4):
    result=find(i)
    if result:
        break;
    
if result:
    print("YES")
else:
    print("NO")

 

๊ธฐํƒ€

java ๋กœ ๊ตฌํ˜„ํ•˜๊ธฐ๊ฐ€ ์–ด๋ ค์›Œ์„œ ๋จผ์ € ํŒŒ์ด์ฌ์œผ๋กœ ๊ตฌํ˜„ํ•ด๋ณด๊ณ  ๋‹ค์‹œ java๋กœ ํ’€์—ˆ๋‹ค.

์•„์ด๋””์–ด ์ž์ฒด๋Š” ์–ด๋ ต์ง€ ์•Š์€๋ฐ ๋– ์˜ฌ๋ฆฌ๊ธฐ๊ฐ€ ์–ด๋ ค์› ๋‹ค.

'๐Ÿ’ป ์•Œ๊ณ ๋ฆฌ์ฆ˜ > PS' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[2017 ์นด์นด์˜ค์ฝ”๋“œ ์˜ˆ์„ ] ์ปฌ๋Ÿฌ๋ง๋ถ - ํŒŒ์ด์ฌ  (0) 2022.03.16
[BOJ/๋ฐฑ์ค€] 9024 ๋‘ ์ˆ˜์˜ ํ•ฉ - ํŒŒ์ด์ฌ  (0) 2021.11.01
[BOJ/๋ฐฑ์ค€] 20047 ๋™์ „ ์˜ฎ๊ธฐ๊ธฐ - ์ž๋ฐ”  (4) 2021.10.05
[BOJ/๋ฐฑ์ค€] 19538 ๋ฃจ๋จธ - ํŒŒ์ด์ฌ  (0) 2021.09.17
[BOJ/๋ฐฑ์ค€] 1074 Z - ํŒŒ์ด์ฌ  (0) 2021.09.17
'๐Ÿ’ป ์•Œ๊ณ ๋ฆฌ์ฆ˜/PS' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [2017 ์นด์นด์˜ค์ฝ”๋“œ ์˜ˆ์„ ] ์ปฌ๋Ÿฌ๋ง๋ถ - ํŒŒ์ด์ฌ
  • [BOJ/๋ฐฑ์ค€] 9024 ๋‘ ์ˆ˜์˜ ํ•ฉ - ํŒŒ์ด์ฌ
  • [BOJ/๋ฐฑ์ค€] 20047 ๋™์ „ ์˜ฎ๊ธฐ๊ธฐ - ์ž๋ฐ”
  • [BOJ/๋ฐฑ์ค€] 19538 ๋ฃจ๋จธ - ํŒŒ์ด์ฌ
.๋ฐ.
.๋ฐ.
  • .๋ฐ.
    Do IT
    .๋ฐ.
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • All (40)
      • ๐Ÿ’ป ์•Œ๊ณ ๋ฆฌ์ฆ˜ (21)
        • PS (16)
        • SQL (4)
        • ์ด๋ก  (5)
      • ๐ŸŽˆcapstone (2)
      • ๐Ÿ’ชBackend (12)
        • Django (8)
        • Spring (4)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    ์žฌ๊ท€
    bruteforce
    ์Šค์ผ€์ค„๋Ÿฌ
    python
    ๋ฌธ์ œํ’€์ด
    ๋‹ค์ค‘์กฐ์ธ
    programmers
    PS
    ์ž๋ฐ”
    responsecustomclass
    apiresponse
    windowํ•จ์ˆ˜
    ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
    BOJ
    MYSQL
    ์•Œ๊ณ ๋ฆฌ์ฆ˜
    ๋ฐฑ์ค€
    Django
    ์‘๋‹ตํ˜•์‹
    ์ฝ”ํ…Œ
    crud
    ์„œ๋ธŒ์ฟผ๋ฆฌ
    SQL
    resposneentity
    BFS
    ํŒŒ์ด์ฌ
    Batch
    ETL
    ์Šคํ”„๋ง๋ฐฐ์น˜
    springscheduler
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
.๋ฐ.
[BOJ/๋ฐฑ์ค€] 20041 Escaping - ์ž๋ฐ”,ํŒŒ์ด์ฌ
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”