본문 바로가기
알고리즘

더 좋은 코드 만들기 2

by 민챙이_99 2026. 1. 29.

1. 백준 3009번 - 네번째 점 

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

[내가 작성한 코드]

https://github.com/moonlight-duck/study-algorithms/pull/45/changes/2705ca70810e8fbe20185c83691bd5f6f702428e#diff-0724e8d3436e3a05fc3b0c6894e847281e87671a3d136b070d20873ae59bdf95R1

 

[민주] 백준 단계별 문제 풀이 - 기하 1: 직사각형과 삼각형 by min-99 · Pull Request #45 · moonlight-duck/st

📌 문제 정보 문제 링크 : https://www.acmicpc.net/step/50 카테고리 (예: 구현, 탐색, DP) : 기하 1: 직사각형과 삼각형 ✏️ 풀이 방법 결과 (성공/실패) : 풀이 시간 : 풀이 방법 : 참고한 글 링크 : ⭐ 비고

github.com

checkX, checkY map을 만들어서 각각 몇번씩 나왔는지 체크해서 마지막에 1개만 나온 키 값을 출력하는 방식

 

[다른 방법 생각해보기]

XOR 연산자를 사용하면, 더 쉽게 풀 수 있습니다.

 

[XOR 연산자] - 쌍찾기나 암호화에 최적화

  1. 똑같은 숫자끼리 XOR 하면 0이 됩니다.
    • A ^ A === 0 (서로 상쇄되어 사라짐)
  2. 0과 어떤 숫자를 XOR 하면 그 숫자가 그대로 나옵니다.
    • 0 ^ B === B (0은 아무런 영향을 주지 않음)
  3. 순서는 상관없습니다. (교환법칙)
    • A ^ B ^ A 는 A ^ A ^ B와 같고, 결국 B만 남습니다.

💡 즉, A ^ B ^ A를 계산하면 A 두 개는 서로 지워지고, 혼자 있는 B만 툭 튀어나옵니다.

 

[개선한 코드]

https://github.com/moonlight-duck/study-algorithms/pull/45/changes/a1fd484fdb35901900401bcc905c31eeb87f6cd6#diff-0724e8d3436e3a05fc3b0c6894e847281e87671a3d136b070d20873ae59bdf95R4

 

[민주] 백준 단계별 문제 풀이 - 기하 1: 직사각형과 삼각형 by min-99 · Pull Request #45 · moonlight-duck/st

📌 문제 정보 문제 링크 : https://www.acmicpc.net/step/50 카테고리 (예: 구현, 탐색, DP) : 기하 1: 직사각형과 삼각형 ✏️ 풀이 방법 결과 (성공/실패) : 풀이 시간 : 풀이 방법 : 참고한 글 링크 : ⭐ 비고

github.com