본문 바로가기

전체 글137

25945번 - 컨테이너 재배치 [백준 - Python] https://www.acmicpc.net/problem/25945 25945번: 컨테이너 재배치 항구의 컨테이너 하치장 바닥에는 컨테이너를 쌓을 수 있는 칸이 일렬로 총 $n$개가 그려져 있고, 현재 하치장에는 총 $m$개의 컨테이너가 쌓여 있다. 개별 컨테이너의 높이는 모두 $1$로 동일하며 www.acmicpc.net 컨테이너 평균갯수에 중점을 두었다. 하지만 소수점이 생기기 때문에 소수점을 버림했을 경우로 생각하였다. 컨테이너가 모자라서 반드시 추가해야하는 경우는 (평균)미만일 경우이다. 컨테이너가 너무 많아서 반드시 다른곳으로 옮겨야하 하는 경우는 (평균+1) 초과일 경우이다. 모자라거나 많은 경우를 구하여 각각 변수에 저장한다. 이 값들중 더 큰값을 추출하면 답이 된다. 모자라는 경우 문제에서.. 2023. 10. 15.
25943: 양팔저울 [백준 - Python] https://www.acmicpc.net/problem/25943 25943번: 양팔저울 입력은 표준입력을 사용한다. 첫 번째 줄에 자갈 개수를 나타내는 양의 정수 $n$ ($2 ≤ n ≤ 10\,000$)이 주어진다. 다음 줄에 $n$ 개의 수들이 주어지는데, 이들은 번호 순서대로 자갈의 무게이다. 자 www.acmicpc.net left, right 변수 2개를 만들어서 각각 첫번째 자갈과 두번째 자갈 무게를 값으로 초기화 해준다. 나머지 자갈들을 규칙에 맞게 왼쪽 오른쪽에 놔둔다. 그다음 left와 right의 무게를 비교하여 같다면 0을 출력하고, 다르다면 차이값을 구한다. 차이값에서 무한루프로 가장 큰 무게추 100g 부터 1개씩 카운트해준다. n = int(input()) stones = l.. 2023. 10. 3.
26111: Parentheses Tree [백준 - Python] https://www.acmicpc.net/problem/26111 26111번: Parentheses Tree A rooted ordered tree $T$ can be expressed as a string of matched parentheses $p(T)$. The string representation $p(T)$ can be defined recursively. As a base case, a tree consisting of a single node is expressed by a pair of parentheses (). When a rooted or www.acmicpc.net 소괄호 리스트가 입력으로 주어졌을 때, "()"형태의 괄호가 어느정도 깊이에 있는지를 알아내여 그 값들의 합을 .. 2023. 10. 3.
11070 : 피타고라스 기댓값 [백준 - Python] https://www.acmicpc.net/problem/11070 11070번: 피타고라스 기댓값 입력 데이터는 표준입력을 사용한다. 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 입력 데이터의 수를 나타내는 정수 T가 주어진다. 각 테스트 데이터의 첫 줄에는 두 양의 www.acmicpc.net 득점과 실점을 저장할 배열을 만들고 계산하는 것 까지는 쉽다. 반례로 그냥 계산을 할 때,득점 실점이 모두 0일 경우 division Zero 가 뜰 수 있기 때문에 그 경우 if문으로 예외처리해야 한다. T = int(input()) for _ in range(T): teamNum, gameNum = map(int,input().split()) teamsScore = [0 for i in .. 2023. 9. 28.
1676번: 팩토리얼 0의 개수 [백준 - Python] https://www.acmicpc.net/problem/1676 1676번: 팩토리얼 0의 개수 N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오. www.acmicpc.net 팩토리얼 결과 뒤에 0이 나오는 경우는 가장 간단하게 생각했을 때, 5가 몇개들어가있는지 알 수 있으면 된다. 2*5 = 10 인데, 2는 5보다 더 자주 출현하므로 2는 충분하다. 따라서 5의 개수가 몇개인지만 알면된다. 이 문제에서는 주어지는 수의 범위가 0~500이다. 5^4 = 625이므로 5^3까지만 고려하면되고, 0!일 경우도 따로 생각해주면 된다. 0!=1 이므로 따로 케이스를 만들어 0을 출력하면된다. 5^3일때 한번에 3번 카운트를 해도 되지만, 일부러 한번만 카운트.. 2023. 9. 18.
1920번: 수 찾기 [백준 - Python] https://www.acmicpc.net/problem/1920 1920번: 수 찾기 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들 www.acmicpc.net 검사하고 싶은 숫자가 찾고자 하는 문자열에 있는지 없는지를 검사하는 문제이다. 문자열을 인덱스 0번부터 끝까지 뒤지면서 찾아볼 수 있지만 그렇게 되면 시간이 너무 오래걸리게 된다. 따라서 미리 정렬한 뒤, 이분탐색을 통해 원하는 수가 있는지 찾아보게 되면 시간단축을 할 수 있게된다. 이분탐색을 구현을 위하여 끝과 끝, 중간값 3개의 값이 필요하다. .. 2023. 9. 15.
27866번: 문자와 문자열 [백준 Python] https://www.acmicpc.net/problem/27866 27866번: 문자와 문자열 첫째 줄에 영어 소문자와 대문자로만 이루어진 단어 $S$가 주어진다. 단어의 길이는 최대 $1\,000$이다. 둘째 줄에 정수 $i$가 주어진다. ($1 \le i \le \left|S\right|$) www.acmicpc.net s = input() i = int(input()) print(s[i - 1]) 입력받은 문자열에서 인덱스를 이용하여 원하는 위치에 있는 문자 하나만 꺼내어 출력할 수 있다. * 인덱스는 0부터 시작함에 주의하여 s[i-1] 처럼 1을 빼줘야한다. 2023. 9. 15.
파이썬 bitnami wampstack로 CGI 연결하기 파이썬이 컴퓨터에 깔려있다고 가정하고 진행하겠다. 1. bitnami wamp stack 사이트에서 본인 운영체제에 맞는 것을 골라 설치해준다. (나는 8.0.3-2 버전을 설치하였고, 로컬 C에 설치했다) 2. bitnami가 설치되어있는 경로에 들어가서 몇가지 설정을 해준다. 2-1. C:\Bitnami\wampstack-8.0.3-2\apache2\conf 로 이동해준 뒤, httpd.conf 파일을 수정해줄 것이다. 먼저 혹시모르니까 httpd.conf.bak이라는 이름으로 복제본을 만들어둔다. 원본파일인 httpd.conf 파일에 들어가서 mod_cgi 를 검색으로 찾아준 뒤 LoadModule cgi_module modules/mod_cgi.so 이 주석처리가 안되어 있는지 확인해준다. 2-2.. 2023. 1. 12.
[python]은?행 털!자 1 - 26267 두번째 줄부터 입력받을 때 배열에 값들을 배열로 묶어 2중배열로 담아주었다. 이 때 시간 T - 좌표 X 를 한 값을 추가적으로 담아주었다. 시우는 좌표가 증가는 방향으로만 이동해야하기 때문에 멈출 수 없다. T-X를 해준 값이 똑같은 은행만 방문할 수 있다. T-X가 같은 값을 가진 은행들을 각각 합하여 가치가 높은 것을 출력해주었다. import sys n = int(input()) arr = [] for i in range(n): arr.append(list(map(int,sys.stdin.readline().split()))) arr[i].append(arr[i][1]-arr[i][0]) timeset = {} for i in range(n): if arr[i][3] in timeset.keys(.. 2022. 12. 19.
[python] 멘토와 멘티 - 26265 번 처음에 람다식으로 sort 내부에서 해결하려고 하였다. 멘티의 첫글자를 아스키코드로 변환하고 - 를 붙여서 크기비교를 해보았으나 멘티 이름은 한글자가 아니라 문자열이기 때문에 이 방법으로는 최적의 정답을 낼 수 없었다. 먼저 멘토 기준으로 정렬하고, 멘토를 key로 딕셔너리를 만들어 value 값으로 멘티 이름을 배열로 넣어주고 내림차순 정렬해주었다. 그리고 순서대로 출력해주면 된다. import sys n = int(input()) arr = [] for i in range(n): arr.append(((sys.stdin.readline().split()))) # arr = sorted(arr,key = lambda x:(x[0],-ord(x[1][0]))) arr.sort() arr2 = {} for.. 2022. 12. 18.
[python]로봇 청소기 - 14503번 빡구현 문제이다. 청소를 할 수 있을 때와 못할 때 2경우로 크게 나눴다. 청소 가능한 경우 방향을 바꾸고 앞으로 움직여줘야 하는 것에 염두를 둬야한다. 청소를 하지 못할 경우는 작게 3가지로 나누었다. 1. 4방향을 모두 돌았는데 뒤가 벽일경우 break 2. 4방향 모두 돌았는데 뒤로 갈 수 있는 경우 3. 왼쪽을 바라봤을 때 청소를 할 수 없는 경우 청소를 하지 못할 경우의 2번째 경우는 방향전환을 할 필요없이 뒤로 가기만 하면되지만, 나머지 1, 3번째 경우는 방향을 돌려줘야 한다. import sys n,m = map(int, input().split()) r,c,d = map(int,input().split()) field = [] direction_to_left =[[0,-1],[-1,0],.. 2022. 12. 17.
[python]팬그램 - 10384번 a부터 z까지의 딕셔너리를 만들어놓고 0으로 초기화해둔다. 입력값으로 루프를 만든다 만약 영어 문자가 있다면 소문자로 바꾸고 check 딕셔너리에 해당 자리에 +=1을 해준다. 루프가 끝나면 check를 루프 돌리면서 최소 값이 어떤지 찾는다. 생각해보니 size = min(check.values()) 을 쓰면 루프를 돌리지 않아도 된다. n=int(input()) for testCase in range(n): inn = input() check = {'a':0,'b':0,'c':0,'d':0,'e':0,'f':0,'g':0,'h':0,'i':0,'j':0,'k':0,'l':0,'m':0,'n':0,'o':0,'p':0,'q':0,'r':0,'s':0,'t':0,'u':0,'v':0,'w':0,'x':0.. 2022. 12. 16.