hani_verse :: aim_higher
article thumbnail

μ•ˆλ…•ν•˜μ„Έμš” aim_higher μž…λ‹ˆλ‹€.
μ½”λ“œν¬μŠ€ Round #806 (Div. 4) μ½”λ“œλ¦¬λ·° 및 μ—…μ†”λΉ™μž…λ‹ˆλ‹€.
λ‚œμ΄λ„ 관계상 A, Bλ²ˆμ€ μƒλž΅ν•˜κ² μŠ΅λ‹ˆλ‹€.


C. Cypher
https://codeforces.com/contest/1703/problem/C

  • Implementation(κ΅¬ν˜„)

 
κ°„λ‹¨νžˆ 문제λ₯Ό μ„€λͺ…ν•˜μžλ©΄,
n개의 νœ μ„ 가지고 μžˆλŠ” μžλ¬Όμ‡ κ°€ μžˆμŠ΅λ‹ˆλ‹€.
 
μžλ¬Όμ‡ μ˜ ν•œ νœ μ— λŒ€ν•΄μ„œ 2κ°€μ§€μ˜ μ‹œν–‰μ„ ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 

  • μ‹œν–‰ U : νœ μ„ ν•œ μΉΈ μœ„λ‘œ λŒλ¦½λ‹ˆλ‹€. (9 → 0)
  • μ‹œν–‰ D : νœ μ„ ν•œ μΉΈ μ•„λž˜λ‘œ λŒλ¦½λ‹ˆλ‹€. (0 → 9)

각 νœ μ— λŒ€ν•΄μ„œ U, D의 μ‘°ν•©μœΌλ‘œ 이루어진 μ‹œν–‰κ°’μ΄ μ£Όμ–΄μ§€λŠ”λ°μš”
μ΄λŸ¬ν•œ μ‹œν–‰κ°’μ„ λͺ¨λ‘ μˆ˜ν–‰ν•˜κ²Œ λœλ‹€λ©΄ μžλ¬Όμ‡ μ˜ 결과값이 λ‚˜μ˜¬ κ²λ‹ˆλ‹€.
즉, 졜초 μƒνƒœ → μ‹œν–‰κ°’ → μ΅œμ’… μƒνƒœ μž…λ‹ˆλ‹€.
 
λ¬Έμ œμ—μ„œ 좜λ ₯ν•΄μ•Όν•˜λŠ” 것은 졜초 μƒνƒœμ΄κΈ° λ•Œλ¬Έμ—
μ‹œν–‰κ°’μ˜ U, Dλ₯Ό λͺ¨λ‘ λ°˜μ „ν•΄μ£Όκ³ 
μ΅œμ’… μƒνƒœ → μ—­μ‹œν–‰κ°’ → 졜초 μƒνƒœ μˆœμ„œλ‘œ μ°Ύμ•„κ°€λ©΄ λ©λ‹ˆλ‹€.
 
μΆ”κ°€μ μœΌλ‘œ U, D μ‹œν–‰μ„ μ§„ν–‰ν•˜λ‹€λ³΄λ©΄
각 휠의 값이 0보닀 μž‘μ•„μ§€κ±°λ‚˜ 9λ₯Ό λ„˜μ–΄κ°€λŠ” μˆœκ°„μ΄ μ˜¬ν…λ°
0보닀 μž‘μ•„μ§ˆλ•ŒλŠ” 9둜 보내주고, 9λ₯Ό λ„˜μ–΄κ°ˆλ•ŒλŠ” 0으둜 λ³΄λ‚΄μ£Όμ‹œλ©΄ λ©λ‹ˆλ‹€.


D. Double Strings
https://codeforces.com/contest/1703/problem/D

  • Data Structures(자료ꡬ쑰)

 
λ¬Έμžμ—΄ 길이가 8을 λ„˜μ§€ μ•ŠλŠ” n개의 λ¬Έμžμ—΄λ“€μ΄ μ£Όμ–΄μ§‘λ‹ˆλ‹€.
주어진 λ¬Έμžμ—΄λ“€ κ°κ°λ§ˆλ‹€, 주어진 λ¬Έμžμ—΄λ“€ 쀑에 2개λ₯Ό μ‘°ν•©ν•˜μ—¬ ν•΄λ‹Ή λ¬Έμžμ—΄λ‘œ λ§Œλ“€ 수 μžˆλŠ”μ§€λ₯Ό νŒλ³„ν•΄μ•Ό ν•©λ‹ˆλ‹€.
μΆ”κ°€μ μœΌλ‘œ, λ¬Έμžμ—΄ 쑰합을 ν•  λ•Œ 동일 λ¬Έμžμ—΄μ„ μ€‘λ³΅μœΌλ‘œ 쑰합해도 λ©λ‹ˆλ‹€.


map<string, bool>을 μ„ μ–Έν•΄μ€€ 후에,
μž…λ ₯값을 받을 λ•Œ ν•΄λ‹Ή λ¬Έμžμ—΄μ„ map에닀가 μ €μž₯을 ν•΄μ€λ‹ˆλ‹€.
 
그리고 λ¬Έμžμ—΄ κ°κ°λ§ˆλ‹€ 2개둜 자λ₯Ό 수 μžˆλŠ” λͺ¨λ“  경우의 μˆ˜μ— λŒ€ν•΄μ„œ map에 μžˆλŠ”μ§€ ν™•μΈν•˜μ—¬ νŒλ³„ν•˜λ©΄ λ©λ‹ˆλ‹€.
 
abacbλΌλŠ” λ¬Έμžμ—΄μ— λŒ€ν•΄μ„œ μŠ¬λΌμ΄μ‹±μ„ ν•œλ‹€κ³  μ˜ˆμ‹œλ₯Ό λ“€μ–΄λ³΄κ² μŠ΅λ‹ˆλ‹€.
이 λ¬Έμžμ—΄μ„ 2개둜 자λ₯Ό 수 μžˆλŠ” 경우의 μˆ˜λŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.
 

a / bacb → map["a"] && map["bacb"]
ab / acb → map["ab"] && map["acb"]
aba / cb → map["aba"] && map["cb"]
abac / b → map["abac"] && map["b"]

 
μœ„μ™€ 같이 λ‚˜μ˜¬ 수 μžˆλŠ” 경우의 μˆ˜μ— λŒ€ν•΄μ„œ μ €μž₯ν•΄λ’€λ˜ map으둜 νŒλ³„ν•΄μ£Όλ©΄ λ©λ‹ˆλ‹€.
 
λ¬Έμžμ—΄ μ΅œλŒ€ 길이λ₯Ό 8둜 μ œν•œν•΄μ€¬κΈ° λ•Œλ¬Έμ— μ‹œκ°„ λ³΅μž‘λ„λŠ” O(n)μž…λ‹ˆλ‹€.


E. Mirror Grid
https://codeforces.com/contest/1703/problem/E

  • Implementation(κ΅¬ν˜„)

0, 1둜 이루어진 κ·Έλ¦¬λ“œκ°€ μ£Όμ–΄μ§‘λ‹ˆλ‹€.
κ·Έλ¦¬λ“œ λ‚΄μ˜ 셀에 λŒ€ν•΄μ„œ (0 → 1), (1 → 0)κ³Ό 같이 뒀집을 수 μžˆμŠ΅λ‹ˆλ‹€.
μœ„ μ‹œν–‰μ„ μ΅œμ†Œλ‘œ μ‚¬μš©ν•˜μ—¬ κ·Έλ¦¬λ“œκ°€ 90도 νšŒμ „μ„ λ°˜λ³΅ν•΄λ„
항상 μ›λž˜μ˜ ν˜•νƒœλ₯Ό μœ μ§€ν•˜λ„λ‘ λ§Œλ“€μ–΄μ•Ό ν•©λ‹ˆλ‹€.


κ·Έλ¦¬λ“œλ₯Ό μœ μ‹¬νžˆ λ³΄μ‹œλ©΄ μ•„μ‹œκ² μ§€λ§Œ,
n이 홀, μ§μΌλ•Œ λͺ¨λ‘ (n/2) × (n/2) λ‹¨μœ„λ‘œ 이루어진 사뢄면을 λ™μ‹œμ— ν›‘μ–΄μ£Όλ©΄ λ©λ‹ˆλ‹€.
κ·ΈλŸ¬λ‹ˆκΉŒ μ‰½κ²Œ λ§ν•΄μ„œ κ·Έλ¦¬λ“œλ₯Ό 4λ“±λΆ„μœΌλ‘œ 자λ₯΄λ €κ³  λ…Έλ ₯ν•˜μ‹œλ©΄ λ©λ‹ˆλ‹€.
 
단, n이 홀일 λ•ŒλŠ” κ·Έλ¦¬λ“œκ°€ 4λ“±λΆ„μœΌλ‘œ λ‚˜λˆ„μ–΄ 떨어지지 μ•ŠμœΌλ―€λ‘œ
κ°€μš΄λ° μ‹­μžκ°€ λͺ¨μ–‘μ˜ 셀듀에 λŒ€ν•΄μ„œ νŒλ³„μ„ λ”°λ‘œ ν•΄μ£Όμ–΄μ•Ό ν•©λ‹ˆλ‹€.
 
μ‚¬λΆ„λ©΄μ˜ 기쀀점 (i, j)을 제2μ‚¬λΆ„λ©΄μœΌλ‘œ 작고 μƒκ°ν•œλ‹€λ©΄

  • 제1사뢄면은 (j, n-1-i)
  • 제3사뢄면은 (n-1-j, i)
  • 제4사뢄면은 (n-1-i, n-1-j)

이 4개의 셀을 λ™μ‹œμ— ν™•μΈν•˜μ—¬ μ–΄λ–€ 수둜 ν†΅μΌμ‹œν‚€λŠ” 게 λΉ λ₯Όμ§€ νŒλ³„ν•΄μ£Όμ‹œλ©΄ λ©λ‹ˆλ‹€. (iλŠ” n/2번 순회)
 
ν™€μˆ˜μ˜ κ²½μš°μ—λŠ” (n/2, i), (n/2, n-1-i), (i, n/2), (n-1-i, n/2)λ₯Ό λ™μ‹œμ— νŒλ³„ν•΄μ£Όμ‹œλ©΄ λ©λ‹ˆλ‹€. (iλŠ” n/2번 순회)
λ‹Ήμ—°ν•˜κ²Œλ„, 정쀑앙은 λŒλ €λ„ 항상 κ°™κΈ°λ•Œλ¬Έμ— νŒλ³„ν•  ν•„μš”κ°€ μ—†μŠ΅λ‹ˆλ‹€.


F. Yet Another Problem About Paris Satisfying an Inequality
https://codeforces.com/contest/1703/problem/F

  • Math(μˆ˜ν•™) *ν•„μžμ˜ λΆ„λ₯˜μž…λ‹ˆλ‹€.

주어진 배열에 λŒ€ν•΄μ„œ Ai < i < Aj < j λ₯Ό λ§Œμ‘±μ‹œν‚€λŠ” μˆœμ„œμŒμ„ κ΅¬ν•˜λ©΄ λ©λ‹ˆλ‹€.


λ¨Όμ € Ai < i < Aj < jλΌλŠ” λ¬Έμž₯을 ν’€μ–΄λ΄…μ‹œλ‹€.

  • (Ai < i) / (Aj < j)
  • i < Aj

(Ai < i)κ³Ό (Aj < j)λ₯Ό μœ μ‹¬νžˆ λ³΄μ‹œλ©΄ Ax < x ν˜•νƒœμž„을 μ•Œ 수 μžˆμŠ΅λ‹ˆλ‹€.
λͺ¨λ“  μˆœμ„œμŒμ— λŒ€ν•΄μ„œ (Ai < i) 그리고 (Aj < j)μž„μ„ λ§Œμ‘±μ‹œν‚€λ €λ©΄,
λ°˜λŒ€λ‘œ Ax >= x μΈ 항을 μ†Œκ±°μ‹œμΌœλ²„λ¦¬λ©΄ μœ„μ˜ 뢀등식을 항상 λ§Œμ‘±μ‹œν‚¬ 수 μžˆμŠ΅λ‹ˆλ‹€.
 
κ·Έλž˜μ„œ μž…λ ₯값을 받을 λ•Œ μž…λ ₯κ°’(Ax)이 인덱슀(x)보닀 크면 μ•„μ˜ˆ μž…λ ₯ λ‹¨κ³„μ—μ„œ κ±°λ₯΄μ‹œλ©΄ λ©λ‹ˆλ‹€.
 
λ§ˆμ§€λ§‰μœΌλ‘œ i < Ajλ₯Ό λ§Œμ‘±μ‹œν‚€λŠ” 경우λ₯Ό μ°Ύμ•„λ΄…μ‹œλ‹€.
 
λ¬Έμ œμ—μ„œ μ œκ³΅ν•˜λŠ” 첫번째 ν…ŒμŠ€νŠΈμΌ€μ΄μŠ€λ₯Ό μ˜ˆμ‹œλ‘œ λ“€μ–΄λ³΄κ² μŠ΅λ‹ˆλ‹€.
(x, Ax) ν˜•νƒœλ‘œ μ»¨ν…Œμ΄λ„ˆμ— μ§‘μ–΄λ„£κ²Œ λœλ‹€λ©΄
(1, 1) (2, 1) (3, 2) (4, 3) (5, 8) (6, 2) (7, 1) (8, 4) 이고, Ax >= xλ₯Ό μ†Œκ±°ν•˜κ²Œ 되면
(2, 1) (3, 2) (4, 3) (6, 2) (7, 1) (8, 4)κ°€ λ‚¨μŠ΅λ‹ˆλ‹€.
 
μ΄λ•Œ, jλ₯Ό κΈ°μ€€μ μœΌλ‘œ μƒκ°ν•˜μ—¬ j = 2λΆ€ν„° 6κΉŒμ§€ μˆœνšŒν•˜κ²Œ λœλ‹€λ©΄ (1 <= i < j μ΄λ―€λ‘œ, j = 1은 λΆˆκ°€λŠ₯)

  • (3, 2) : j = 2 일 λ•Œ, Aj = 2 → i < 2, 0개
  • (4, 3) : j = 3 일 λ•Œ, Aj = 3 → i < 3, 1개 { (2, 1) }
  • (6, 2) : j = 4 일 λ•Œ, Aj = 2 → i < 2, 0개
  • (7,  1) : j = 5 일 λ•Œ, Aj = 1 → i < 1, 0개
  • (8, 4) : j = 6 일 λ•Œ, Aj = 4 → i < 4, 2개 { (2, 1), (3, 2) }

κ·Έλž˜μ„œ λ‚˜μ˜¬ 수 μžˆλŠ” μˆœμ„œμŒμ€ 총 3κ°œμž…λ‹ˆλ‹€.
μ΄λŸ¬ν•œ 둜직으둜 μ½”λ“œλ₯Ό μž‘μ„±ν•˜μ‹œλ©΄ 정닡이 λ‚˜μ˜΅λ‹ˆλ‹€.
(*ν•„μžλŠ” long long을 μ„ μ–Έν•˜μ§€ μ•Šμ•„ ν‹€λ Έλ‹€λŠ” 사싀....)
 
μ‹œκ°„ λ³΅μž‘λ„λŠ” O(n)μž…λ‹ˆλ‹€.


G. Good Key, Bad Key
https://codeforces.com/contest/1703/problem/G

  • λ―ΈλΆ„λ₯˜

업솔빙 μ€‘μž…λ‹ˆλ‹€...

profile

hani_verse :: aim_higher

@aim_higher

ν¬μŠ€νŒ…μ΄ μ’‹μ•˜λ‹€λ©΄ "μ’‹μ•„μš”β€οΈ" λ˜λŠ” "κ΅¬λ…πŸ‘πŸ»" ν•΄μ£Όμ„Έμš”!