728x90
반응형
- [ 언어·프레임워크/Python ][Python] dbm to xlsx 어플리케이션 만들기2021-12-01 12:00:34제작 동기 Microsoft Access의 dbm에서 원하는 기간에 해당하는 row를 xlsx파일로 내보내는 [그림1]과 같은 어플리케이션을 만들어 보았다. 그동안 생산 작업일보를 Access로 관리하고 있었고, Access의 보고서 기능을 이용해 부장님께 일일 생산보고를 진행해 왔었다. 어느날 부장님께서는 직접 데이터를 다루기 원하셨다. 하지만 Excel에 익숙하신 부장님은 Access를 불편해 하셨다. 그래서 dbm to xlsx 어플리케이션을 만들게 되었다. 작성 코드 사용된 주요 Python 라이브러리는 PyQt5, pandas, pyodbc 이다. import sys from PyQt5.QtWidgets import * from PyQt5.QtCore import * from PyQt5 impo..
- [ CS/코딩 테스트 ][알고리즘][파이썬] 백준_11729_하노이 탑 이동 순서2021-11-30 00:12:54문제 지문의 그림을 보면 원판에 번호가 있다. 이 원판의 번호는 아무 의미 없으므로 무시해야 한다(원판은 크기가 중요). 규칙은 한 번에 한 개의 원판만 옮겨야 하고, 쌓아 놓은 원판은 항상 위의 것이 아래의 것보다 작아야 하며, 이동 횟수는 최소가 되어야 한다. [그림1]은 이해를 돕기 위해 원판 3개의 경우를 움직이는 그림으로 만들어 보았다. 예제 입력이 3인 경우의 출력 결과는 다음과 같다. 7 # 원판을 옮긴 총 횟수 1 3 # (이하) 원판이 옮겨진 위치(예: 1번 장대에서 3번 장대로 이동) 1 2 3 2 1 3 2 1 2 3 1 3 예제 입력 3인 경우를 [그림2]로 나타내 보았다. 제출 코드 # 재귀함수 이용(결과: 맞았습니다!) def hanoi(n, a, b, c): if n == 1:..
- [ CS/코딩 테스트 ][알고리즘][파이썬] 백준_2447번_별 찍기 - 102021-11-26 16:07:29*** * * *** N이 3보다 클 경우, 크기 N의 패턴은 공백으로 채워진 가운데의 (N/3)×(N/3) 정사각형을 크기 N/3의 패턴으로 둘러싼 형태이다(N은 3, 9, 27…). 재귀함수를 이용해 문제를 해결한다. 1차 시도 # 재귀함수 이용(결과: 출력 형식이 잘못되었습니다) def star(N): if N == 1: return ['*'] lst = [] patt = N // 3 for i in star(patt): lst.append(i * 3) for i in star(patt): lst.append(i + ' ' + i) # ' '에 (patt)를 곱해 주어야 한다. for i in star(patt): lst.append(i * 3) return lst print('\n'.join(st..
- [ CS/코딩 테스트 ][알고리즘][파이썬] 백준_10870번_피보나치 수 52021-11-25 13:25:4720보다 작거나 같은 자연수 또는 0이 주어질때 그 수(n) 번째에 해당하는 피보나치 수를 구해야 한다. 피보나치 수는 0, 1에서 부터 시작하는 데, 바로 앞 두 수의 합이다. n이 10일때 10번째 피보나치 수는 55이다. 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55 1차 시도 # for 반복문 이용(결과: 틀렸습니다) n = int(input()) lst = [0, 1] for i in range(n-1): rst = lst[i] + lst[i+1] lst.append(rst) print(max(lst)) 지문과 같이 10을 입력했을 때 55가 정확하게 나왔다. 하지만 0을 입력했을때 0이 출력되어야 하는데 위 코드에서는 1이 출력되었기 때문에 틀렸던 것이다. 2차 시도 # fo..
- [ CS/코딩 테스트 ][알고리즘][파이썬] 백준_10872번_팩토리얼2021-11-24 17:11:43"0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오." 지문이 이게 다라니?! 알고보니 팩토리얼에 대한 이해가 필요했다. 팩토리얼은 0이상의 정수 N이 주어졌을때, 1부터 N까지 곱하는 것을 말한다. 1차 시도 # 재귀함수 이용한 풀이(결과: 맞았습니다!) def fac(N): if N
- [ CS/코딩 테스트 ][알고리즘][파이썬] 백준_10250번_ACM 호텔2021-11-23 17:45:44(T)명의 손님에 대하여 호텔의 층 수(H), 각 층의 방 수(W), 몇 번째 손님(N)이 주어질 때 방 번호를 출력해야 한다. 만약 7번째 손님이라면 102호에 배정한다. 1차 시도 # 1차시도(결과: 틀렸습니다) T = int(input()) for i in range(T): H, W, N = map(int, input().split()) rn = 0 # 방 번호 fl = 0 # 층 수 if N % H == 0: fl = H else: fl = N % H rn = N // H + 1 print(fl * 100 + rn) N번째 손님을 H층으로 나눈 나머지가 0일때의 경우에 대한 처리가 문제였다. 그 경우에는 방번호를 구할때 +1을 하지 말아야 한다. 2차 시도 # 2차시도(결과: 맞았습니다) # N번..
- [ CS/코딩 테스트 ][알고리즘][파이썬] 백준_2869번_달팽이는 올라가고 싶다2021-11-19 15:34:45달팽이가 있다. 변수 A는 낮에 기어 올라가는 거리, 변수 B는 밤에 잘때 미끄러지는 거리, 변수 V는 정상이며, 정상에 도달할 경우 밤에 미끄러지지 않는다. 이때 정상에 몇일만에 도착할 수 있는지 출력해야 한다. 1차 시도 # 1차시도(결과: 시간 초과) A, B, V = map(int, input().split()) per = 0 # 달팽이의 performance 변수 days = 1 # 구하고자 하는 정상 도달일 변수(기본값을 1일로 주었다) while 1: per += A if per >= V: break per -= B days += 1 print(days) 예제의 값을 입력하여 출력하니 결과값은 동일하게 출력되었다. 하지만 예제 입력 3번(100 99 1000000000)의 경우 매우 오랜 시..
- [ CS/코딩 테스트 ][알고리즘][파이썬] 백준_1193번_분수찾기2021-11-18 17:00:24제일 왼쪽 상단의 분수(1/1)가 1번이다. 화살표를 따라 분수의 번호가 증가한다(1/2은 2번, 2/1는 3번······.) 번호를 입력 받아 해당하는 분수를 출력해야 한다. 1차 시도 # 리스트와 함수를 이용한 풀이(결과 : 시간초과) lst = [] def odd(n): for i in range(1, n+1): lst.append('%d/%d'%(n+1-i, i)) def even(n): for i in range(1, n+1): lst.append('%d/%d'%(i, n+1-i)) ipt = int(input()) for i in range(1, ipt+1): if i % 2 == 0: even(i) else: odd(i) print(lst[ipt-1]) 리스트와 함수를 이용했다. 값은 정확하..
728x90
반응형