[Linux]부트캠프 - 파일 및 폴더 생성
파일 및 폴더 생성
무한히 큰 배열에 다음과 같이 분수들이 적혀있다.
1/1 | 1/2 | 1/3 | 1/4 | 1/5 | … |
---|---|---|---|---|---|
2/1 | 2/2 | 2/3 | 2/4 | … | … |
3/1 | 3/2 | 3/3 | … | … | … |
4/1 | 4/2 | … | … | … | … |
5/1 | … | … | … | … | … |
… | … | … | … | … | … |
이와 같이 나열된 분수들을 1/1 → 1/2 → 2/1 → 3/1 → 2/2 → … 과 같은 지그재그 순서로 차례대로 1번, 2번, 3번, 4번, 5번, … 분수라고 하자.
X가 주어졌을 때, X번째 분수를 구하는 프로그램을 작성하시오.
첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다.
첫째 줄에 분수를 출력한다.
1
1/1
2
1/2
3
2/1
4
3/1
5
2/2
6
1/3
7
1/4
8
2/3
9
3/2
14
2/4
대각선이 이동하며 지그재그 형식으로 이동하고있다.
이걸 보면 규칙을 찾을 수 있다. 대각선을 기준으로 생각해보면, 1번째 대각선에서는 1개의 분수, 2번째 대각선에서는 2개의 분수, 3번째 대각선에서는 3개의 분수.. 즉, n번째 대각선에서는 n개의 분수가 존재한다는 것을 확인할 수 있다. 그리고 홀수 대각선에서는 n/1
에서 1/n
으로 가는 것을 확인할 수 있다. 즉, 홀수 대각선에서는 칸이 이동할 때 분자가 1씩 줄어들고 분모가 1씩 늘어나는 것을 알 수 있다. 그렇다면 짝수 대각선에서는 1/n
-> n/1
이런 형식일 것이다. 이 규칙을 숙지해 코드를 짜보자!
숫자 X를 받아주자.
X = int(input())
그리고 받은 숫자 X와 같은 숫자 변수를 하나 만들어놓자.(이유는 추후에 나온다.)
num = X
이제 line
이라는 변수를 선언해줄 것이다. line
은 n번째 대각선을 나타내는 변수다. 이 문제에서는 입력값이 최소 1부터 시작하기 때문에 무조건 1번째 대각선부터 시작한다. 그래서 line
에 1를 저장하여 시작해준다.
line = 1
이제 입력받은 숫자 X가 위치한 대각선을 구하기 위한 식을 짜보자. 대각선 규칙은 이렇다.
1 : 1번 대각선
2, 3 : 2번 대각선
4,5,6 : 3번 대각선
7,8,9,10 : 4번 대각선
2292번 벌집 문제처럼 while문을 사용하면 수월하다.
while num > 1:
line += 1
num -= line
위 대각선 규칙을 보면 한 대각선에 가지고 있는 값이 1씩 증가한다. 즉 1, 2/3, 4/5/6, 7/8/9/10, 11/12/13/14/15 이라는 뜻.
따라서 대각선 변수인 line
이 1씩 추가되며, 그 만큼 num의 숫자가 깎이면서 해당 숫자가 몇번째 대각선에 위치한지 확인할 수 있다.
예를 들어, 10이면 line
이 4로, 네 번째 대각선에 위치한다는 것을 알 수 있다.
대각선의 위치를 구했다면, 해당 대각선에서 몇 번째 칸에 위치하는지를 구해보자.
위에서 확인했듯이 대각선이 이동할때마다 갖고있는 값들의 크기가 1씩 증가하는 것을 확인할 수 있다. 이제 원래 입력받은 값 X
를 활용할 차례가 온 것 이다.
우선 합계를 나타내는 sum
변수를 선언
sum = 0
이제 반복문을 실행할 것인데 범위는 1부터 line
까지다. 이러면 현재 값이 위치한 대각선의 전 대각선까지만 범위가 잡힌다. 예를들어 입력받은 X
가 10일때 아까 위에서 보았듯이 10은 네 번째 대각선에 위치해 있다. range(1, line)
으로 범위를 잡으면, 세번째 대각선 까지의 값들의 개수가 잡히는 것이다.
각 대각선이 가지고 있는 값들의 개수를 sum
에 더해준다고 생각하면 된다.
for i in range(1, line):
sum += i
그리고 몇 번째 칸을 뜻하는 sequence
라는 변수를 선언해준다. 입력받은 값 X
에서 sum
을 빼주면된다. 입력받은 값이 10이라면, 10 - 6
으로 4가 되어 네 번째 대각선에 위치해 있으며 4번째 순서에 있다는 것을 알 수 있다.
sequence = X - sum
이제 맨 처음에 봤던 규칙들을 상기해보자. 홀수 대각선에서는 n/1
에서 1/n
으로 가는 것을 확인. 짝수 대각선에서는 1/n
에서 n/1
로 가는 것을 확인했다.
홀수 : 대각선 내에서 칸 이동 시 분자가 줄어들고 분모가 커짐
짝수 : 대각선 내에서 칸 이동 시 분자가 커지고 분모가 줄어들음
이걸 코드로 표현해보자. 여기서 son
은 분자, mom
은 분모를 뜻한다.
# 홀수 대각선
if line % 2 != 0:
son = line
mom = 1
print(f'{son - sequence + 1}/{mom + sequence - 1}')
# 짝수 대각선
else:
son = 1
mom = line
print(f'{son + sequence - 1}/{mom - sequence + 1}')
X = int(input())
num = X
line = 1
while num > 1:
line += 1
num -= line
sum = 0
for i in range(1, line):
sum += i
sequence = X - sum
if line % 2 != 0:
son = line
mom = 1
print(f'{son - sequence + 1}/{mom + sequence - 1}')
else:
son = 1
mom = line
print(f'{son + sequence - 1}/{mom - sequence + 1}')
문제 푼 날짜 | 체크 |
---|---|
2022-06-02 | ✔ |
파일 및 폴더 생성
파일 시스템 탐색
도움말(man -> manual)
명령어 기초
유닉스(Unix)
특정 코드 지연 실행 - DispatchQueue.main.asyncAfter(deadline: )
Naming Conventions
안드로이드 폰과 맥북에어 M1 USB 테더링 성공
Simulator 풀 스크린 사용 방법
10807번 - 개수 세기
프로그래머스 Lv.1 풀이 코드 모음
프로그래머스 Lv.1 풀이 코드 모음
11047번 - 동전 0
11659번 - 구간 합 구하기 4
14888번 - 연산자 끼워넣기
9184번 - 신나는 함수 실행
24416번 - 알고리즘 수업 - 피보나치 수 1
2580번 - 스도쿠
9663번 - N-Queen
15652번 - N과 M (4)
15651번 - N과 M (3)
15650번 - N과 M (2)
25305번 - 커트라인
25304번 - 영수증
3003번 - 킹, 퀸, 룩, 비숍, 나이트, 폰
15649번 - N과 M (1)
2004번 - 조합 0의 개수
1676번 - 팩토리얼 0의 개수
9375번 - 패션왕 신해빈
1010번 - 다리 놓기
11051번 - 이항 계수 2
11050번 - 이항 계수 1
3036번 - 링
2981번 - 검문
1934번 - 최소공배수
2609번 - 최대공약수와 최소공배수
1037번 - 약수
5086번 - 배수와 약수
1358번 - 하키
1004번 - 어린 왕자
1002번 - 터렛
3053번 - 택시 기하학
2477번 - 참외밭
4153번 - 직각삼각형
3009번 - 네 번째 점
1085번 - 직사각형에서 탈출
11478번 - 서로 다른 부분 문자열의 개수
1269번 - 대칭 차집합
1764번 - 듣보잡
10816번 - 숫자 카드 2
1620번 - 나는야 포켓몬 마스터 이다솜
14425번 - 문자열 집합
10815번 - 숫자 카드
18870번 - 좌표 압축
10814번 - 나이순 정렬
1181번 - 단어 정렬
11651번 - 좌표 정렬하기 2
11650번 - 좌표 정렬하기
1427번 - 소트인사이드
2108번 - 통계학
10989번 - 수 정렬하기 3
2751번 - 수 정렬하기 2
2750번 - 수 정렬하기
22.06.25 ~ 27 부산 먹부림 기록
1436번 - 영화감독 숌
1018번 - 체스판 다시 칠하기
7568번 - 덩치
2231번 - 분해합
2798번 - 블랙잭
11729번 - 하노이 탑 이동 순서
2447번 - 별 찍기 - 10
17478번 - 재귀함수가 뭔가요?
10870번 - 피보나치 수 5
10872번 - 팩토리얼
9020번 - 골드바흐의 추측
4948번 - 베르트랑 공준
1929번 - 소수 구하기
11653번 - 소인수분해
2581번 - 소수
1978번 - 소수 찾기
10757번 - 큰 수 A+B
2839번 - 설탕 배달
2775번 - 부녀회장이 될테야
10250번 - ACM 호텔
2869번 - 달팽이는 올라가고 싶다
1193번 - 분수찾기
2292번 - 벌집
1712번 - 손익분기점
1316번 - 그룹 단어 체커
2941번 - 크로아티아 알파벳
5622번 - 다이얼
2908번 - 상수
1152번 - 단어의 개수
1157번 - 단어 공부
2675번 - 문자열 반복
10809번 - 알파벳 찾기
11720번 - 숫자의 합
11654번 - 아스키 코드
1065번 - 한수
4673번 - 셀프 넘버
15596번 - 정수 N개의 합
4344번 - 평균은 넘겠지
8958번 - OX퀴즈
25083번 - 새싹
Spark Bigdata Pipeline
Spark 3일차
Spark 2일차
1546번 - 평균
Spark 1일차
Hadoop🐘
3052번 - 나머지
2577번 - 숫자의 개수
2562번 - 최댓값
10818번 - 최소, 최대
Linux
MongoDB 조회 문제
MongoDB
1110번 - 더하기 사이클
10951번 - A+B - 4
Oracle 3️⃣
ORACLE 연습용 문제 만들기 숙제
10952번 - A+B - 5
Oracle 2️⃣
2480번 - 주사위 세개
Oracle Day1️⃣
Tensorflow
Big Data
2525번 - 오븐 시계
10871번 - X보다 작은 수
2439번 - 별 찍기 - 2
2438번 - 별 찍기 - 1
11022번 - A+B - 8
11021번 - A+B - 7
2742번 - 기찍 N
2741번 - N 찍기
15552번 - 빠른 A+B
8393번 - 합
10950번 - A+B - 3
9️⃣ 2739번 - 구구단
2884번 - 알람 시계
14681번 - 사분면 고르기
⛏크롤링(Crawling)
2753번 - 윤년
Django 복습 4️⃣
Django 복습 3️⃣
💯 9498번 - 시험 성적
1330번 - 두 수 비교하기
✖ 2588번 - 곱셈
➗ 10430번 - 나머지
Django 복습 2️⃣
Django 복습 1
MySQL 복습!
⁉10926번 - ??!
🆎1008번 - A/B
👩🦲 18108번 - 1998년생인 내가 태국에서는 2541년생?!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
🎈✨경 축✨🎈
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
선형 자료구조(1일차에 이어서)
🆎10998번 - A×B
🆎1001번 - A-B
🆎1000번 - A+B
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
🐶10172번 - 개
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
🐱10171번 - 고양이
[해당 포스트는 유튜버 나동빈님의 영상을 참고했습니다.]
❤10718번 - We love kriii
🖐2557번 - Hello World
Today I Learned(TIL)📌 (2021.12.31)
Today I Learned(TIL)📌 (2021.12.30)
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[noitce!!] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!