코딩테스트/프로그래머스

프로그래머스 10주차 교점에 별 만들기 풀이/코드 (파이썬)

RyanKwon 2021. 10. 28. 20:00
728x90

코드만 궁금한 분은 깃허브링크 눌러주세요!

 

GitHub - Rhyankwon/algorithms

Contribute to Rhyankwon/algorithms development by creating an account on GitHub.

github.com

 

문제 설명

문제는 간단하다. ax+by+c = 0 꼴의 방정식을 이루는 a,b,c 쌍들이 주어지고 모든 방정식의 교점을 구해 그 중 정수의 x좌표 y좌표를 갖는 경우에 한해서 * 처리를 하고 나머지 범위는 모두 '.' 을 입력한다. 이 때, 모든 별을 포함하는 가장 작은 직사각형 만큼은 '.'을 찍어야하고, 이 때 위와같이 문자열 리스트를 만들어서 리턴해야한다. 요새 백준만 풀다보니까 리턴하는게 어색했달까

 

아무튼 문제 해결 논리

 

1. for문을 통해 모든 방정식의 해를 구한다. 이 때 방정식 해 구하는건 문제 맨 아래에 보면 있으니까 그걸 참고해서 풀면 쉬움.

2. 만약 방정식의 해(x, y좌표 모두)가 정수로 나누어떨어지지 않으면 스킵, 정수로 나누어 떨어지면 리스트에 x, y좌표를 저장하고 최소/최대 x,y좌표를 매번 업데이트한다.

3. 모든 해를 다 구하면 최소/최대 x,y좌표의 길이 차 만큼의 '.'으로 구성된 리스트를 만든다.

4. x, y 값에서 각각 min(x), min(y)값을 빼서 (그렇게 해야 인덱스가 조정됨) 해당 인덱스를 '*'로 바꾼다.

5. y좌표는 우리가 평소에 그릴때와 다르게 위에서부터 0, 맨 아래 인덱스가 n이므로 리스트의 행을 뒤집는다.

리턴하면 끝!

 

인덱스 조정하는게 가장 어려운 문제. 난이도 레벨 투 적당한듯?

728x90