https://www.acmicpc.net/problem/10158
10158๋ฒ: ๊ฐ๋ฏธ
๊ฐ๋ก ๊ธธ์ด๊ฐ w์ด๊ณ ์ธ๋ก ๊ธธ์ด๊ฐ h์ธ 2์ฐจ์ ๊ฒฉ์ ๊ณต๊ฐ์ด ์๋ค. ์ด ๊ฒฉ์๋ ์๋ ๊ทธ๋ฆผ์ฒ๋ผ ์ผ์ชฝ ์๋๊ฐ (0,0)์ด๊ณ ์ค๋ฅธ์ชฝ ์๊ฐ (w,h)์ด๋ค. ์ด ๊ณต๊ฐ ์์ ์ขํ (p,q)์ ๊ฐ๋ฏธ ํ ๋ง๋ฆฌ๊ฐ ๋์ฌ์๋ค. ๊ฐ๋ฏธ๋ ์ค
www.acmicpc.net
import java.io.*;
class Main {
public static void main(String args[]) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] map = br.readLine().split(" ");
int w = Integer.parseInt(map[0]);
int h = Integer.parseInt(map[1]);
String[] start = br.readLine().split(" ");
int p = Integer.parseInt(start[0]);
int q = Integer.parseInt(start[1]);
int t = Integer.parseInt(br.readLine());
// p๊ฐ 0, w์ ๋ฟ์ผ๋ฉด ๋ค์ ์ด๋์ (๋ฐ์ , ๊ทธ๋๋ก) q๊ฐ 0,h์ ๋ฟ์ผ๋ฉด (๊ทธ๋๋ก, ๋ฐ์ )
int dir = 0; // 0, 1, 2, 3 ์๊ณ๋ฐฉํฅ ์์๋๋ก
for(int i=0; i<t; i++){
if(i!=0 && p == Integer.parseInt(start[0]) && q == Integer.parseInt(start[1])){
if (t%i == 0) break;
else{
t = t%i;
}
}
switch (dir){
case 0: {
// + +
p++;
q++;
if (p == w) dir = bounceX(0);
if (q == h) dir = bounceY(0);
if(p==w && q==h) dir = 2;
}
break;
case 1: {
// + -
p++;
q--;
if (p == w) dir = bounceX(1);
if (q == 0) dir = bounceY(1);
if(p==w && q==0) dir = 3;
}
break;
case 2: {
// - -
p--;
q--;
if (p == 0) dir = bounceX(2);
if (q == 0) dir = bounceY(2);
if(p==0 && q==0) dir = 0;
}
break;
case 3: {
// - +
p--;
q++;
if (p == 0) dir = bounceX(3);
if (q == h) dir = bounceY(3);
if(p==0 && q==h) dir = 1;
}
break;
}
}
System.out.printf("%d %d",p,q);
}
static int bounceX(int dir){
int next = 0;
switch (dir){
case 0: {
// + + ์ด๊ฒ ์ด์ ์ํ, ๋ค์ ์ํ๋ก ๊ฐ๋ ค๋ฉด?
next=3;
break;
}
case 1: {
// + -
next=2;
break;
}
case 2: {
// - -
next=1;
break;
}
case 3: {
// - +
next=0;
break;
}
}
return next;
}
static int bounceY(int dir){
int next = 0;
switch (dir){
case 0: {
// + + ์ด๊ฒ ์ด์ ์ํ, ๋ค์ ์ํ๋ก ๊ฐ๋ ค๋ฉด?
next=1;
break;
}
case 1: {
// + -
next=0;
break;
}
case 2: {
// - -
next=3;
break;
}
case 3: {
// - +
next=2;
break;
}
}
return next;
}
}
์ค๋ต๋ ธํธ(ํธ๋ ๋์ ์ฌ๊ณ ๊ณผ์ ๋ฐ ๊ฐ์ ์ )
๊ฒฝ์ฐ์ ์๋ฅผ ์ด์ดํ ์ง์ ์งํ ๋ฐฉํฅ์ ๋ฐ๊ฟ์ฃผ๋ ๋ฐฉ์์ผ๋ก ์ค๊ณํ๋ค... ์์๋ ๋ค ๋ง์๊ณ ์๊ฐ์ด๊ณผ๊ฐ ๋๋ฒ๋ ธ๋ค.
๋ค์ ์ถ๋ฐ์ง์ ์ ๋์ฐฉํ๋ ๊ฒฝ์ฐ๋ก ์ค๊ณํด์ ์ ์ถํด๋ดค์ง๋ง ์ฌ์ ํ ์์ด๊ฐ ๋ฌ๋ค.
์ ๋ต์ฝ๋
import java.io.*;
class Main {
public static void main(String args[]) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] map = br.readLine().split(" ");
String[] start = br.readLine().split(" ");
int W = Integer.parseInt(map[0]);
int H = Integer.parseInt(map[1]);
int P = Integer.parseInt(start[0]);
int Q = Integer.parseInt(start[1]);
int T = Integer.parseInt(br.readLine());
int p = (P + T) % (2 * W);
int q = (Q + T) % (2 * H);
if (p > W) p = 2 * W - p;
if (q > H) q = 2 * H - q;
System.out.println(p + " " + q);
}
}
๋์ฐฉํ๋ ๊ฒ ๋ฅ์ฌ๊ฐ ์๋๋ผ ์ถ๋ฐ์ง์ ์์ ์ถ๋ฐ ๋ฐฉํฅ๋ ๊ฐ์ ๋๋ฅผ ๊ณ ๋ คํ์ด์ผ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฃผ๊ธฐ๋ฅผ ๊ตฌํ๋ ๊ฒ ์ค์ํ๋ฐ, ๊ทธ๋ฅ ๋๊ฐ์ (์ด๋)์ ๊ธฐ์ค์ผ๋ก ์ฃผ๊ธฐ๋ฅผ ์ก์ผ๋ ค๋ฉด ๋ฌด์กฐ๊ฑด ์๊ฐ์ด๊ณผ๊ฐ ๋๋ค.
X, Y์ขํ์ ์ฃผ๊ธฐ๋ฅผ ๊ฐ๊ฐ ๊ด์ฐฐํ๋ฉด,
X๊ฐ ๋ฐฉํฅ์ด ๊ฐ์ ์ขํ์ ๋์ฐฉํ๋ ์ฃผ๊ธฐ๊ฐ p = (T%2W)*N ์ด๊ณ Y์ขํ๋ q = (T%2H)*N ์ด ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฃผ๊ธฐ๋ฅผ ๊ตฌํ ๋ X์ขํ Y์ขํ๋ฅผ ๋ถ๋ฆฌ์ํค๋ฉด ์๊ฐ ๋ณต์ก๋๊ฐ X, Y ๋์ค ํฐ ๊ฐ์ผ๋ก ๊ท์๋๋๊น ์ด ๋ฐฉ๋ฒ์ผ๋ก ์์ฑํ๋ฉด ์๊ฐ์ด๊ณผ๊ฐ ๋์ง์๋๋ค..!
์ถ๋ฐ์ง์ ์ด ์ง๊ธ์ (0,0)์ด ์๋๋ฐ ์ถ๋ฐ์ง์ ์ ์์ ์ผ๋ก ๋ก๊ฒจ์ ๋ณด๋ฉด ์ฃผ๊ธฐ๋ฅผ ์์ฃผ ๋นจ๋ฆฌ ๊ตฌํ ์ ์๊ฒ๋๋ค. ์ด๋ ๋ก๊ธฐ๋ ์ ๋๊ฐ ์ด๊ธฐ ์ขํ๋งํผ์ด๊ธฐ๋๋ฌธ์ ์๊ฐ ์กฐ์ ์ ์ ํด์ผํ๋ค. p, q ๊ฐ W, H ๋ณด๋ค ํด ๋ 2*W-p ์์ ์ ํด์ฃผ๋ ์ด์ ๊ฐ ๊ทธ ๋๋ฌธ์ด๋ค.
์ ์ ๋ต์ฝ๋๋ ๋๋๊ฒ๋ ์๊ฐ์ด๊ณผ๊ฐ ๋๋ค..!
๊ทธ ์ด์ ๋ java ๋ฒ์ ์ ๋ฐ๋ฅธ ์ค์ฐจ๋ก, 11๋ก ํ์๋๋ ์๊ฐ์ด๊ณผ, 8๋ก ํ์๋๋ ๋ฌด์ฌํ ์ฑ์ ์๋ฃ๊ฐ ๋๋ค.
"๋๊ธ, ๊ณต๊ฐ ๋ฒํผ ํ ๋ฒ์ฉ ๋๋ฅด๊ณ ๊ฐ์ฃผ์๋ฉด ํฐ ํ์ด ๋ฉ๋๋ค"
'OJ๐ผ > ์ค๋ต๋ ธํธ๐' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ][JAVA] 3273: ๋ ์์ ํฉ (0) | 2023.10.16 |
---|---|
[BOJ][JAVA] 1236: ์ฑ์งํค๊ธฐ (0) | 2023.10.16 |
[BOJ][JAVA] 13223: ์๊ธํญํ (0) | 2023.10.05 |
[BOJ][JAVA] 1543: ๋ฌธ์ ๊ฒ์ (0) | 2023.10.03 |
[BOJ][JAVA] 1919: ์ ๋๊ทธ๋จ ๋ง๋ค๊ธฐ (0) | 2023.10.01 |