250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- N-Queen
- 4948
- 기계학습
- n과 m
- 가상환경
- 1002
- 백준
- 실버
- 밑바닥부터 시작하는 딥러닝
- 손실함수
- 재귀
- end to end
- BOJ
- Mac
- 백트래킹
- 신경망 학습
- 개발환경
- 파이썬
- 9020
- streamlit
- 1101
- 15649
- pyenv
- 그리디 알고리즘
- 경사하강법
- 파이싼
- Python
- 설정
Archives
- Today
- Total
파이톨치
[백준][python][1193] 분수찾기 본문
728x90
<참고>
이 문제는 다음과 같이 생각할 수도 있다.
1/1 은 좌표 (1,1)
1/2는 좌표 (1,2)
2/1은 좌표 (2,1)
사실 이 문제를 풀 때는 큰 도움이 되지 않는다고 생각한다.
하지만 다음에 풀 N-Queen 문제에서 도움이 된다고 생각하여 적어 보았다.
<어떻게 풀까?>
본론으로 돌아서, 이 문제의 핵심은 분수의 분자와 분모의 합이 일정하다는 것이다.
1번째 대각선에서는 합이 2,
2번째 대각선에서는 합이 3,
3번째 대각선에서는 합이 4,
이런식으로 진행된다.
또 하나의 문제는 지그재그라는 점이다. 이를 해결하기 위해서 나는 test라는 변수를 만들어서 홀수 번째 줄인지
짝수번째 줄인지 체크를 해 주었다.
<코드>
num = int(input())
test = 1
stack = 1
sum = 0
for i in range(1, num+1):
sum = i+1
if stack <= num <= stack +i-1:
what = num - stack + 1
if test%2==1:
print(f"{sum-what}/{what}")
break
else:
print(f"{what}/{sum-what}")
break
stack += i
test += 1
흠... 개발 초보자인 내가 보아도 그닥 예쁘지 않은 코드이다. 내가 만들었지만 정말 못 만들었다는 생각이 든다.
우선 간단하게 설명을 해보자.
test라는 변수를 만들어 홀수 번째 줄인지 짝수 번째 줄인지 체크해주었다.
stack이라는 변수를 만들어 몇 번째 대각선이지 체크를 해주었다.
sum이라는 변수를 이 대각선의 분모와 분자의 합을 체크해준다. (사실 별 필요 없다)
마지막으로 for 문을 통해서 진행을 시켜주었다.
아무리 봐도 효율적인 코드라고 생각하진 않는다. 나는 어디까지나 초보자이기 때문에 나와 같은 초보자가 생각할 수 있는
코드라고 생각한다. 잘하시는 분들은 조언을 해주어도 좋다. 방법이 생각나지 않으신 분들은 <어떻게 풀까?>를 참고해서 만드시면 좋을 것이다.
728x90
'알고리즘' 카테고리의 다른 글
[백준][python][9020] 골드바흐의 추측(시간초과) (0) | 2021.07.14 |
---|---|
[백준][python][1011] Fly me to the Alpha Centauri (0) | 2021.07.12 |
[백준][python][10828] 스택 (0) | 2021.07.09 |
[백준][python][11729] 하노이 탑 이동 순서 (2) | 2021.07.06 |
[백준][python][1620] 포켓몬 마스터 (2) | 2021.07.03 |