전체 글 562

[n1094] 막대기 in python

합 > x 1. 가장 짧은 막대기를 절반으로 나눈 막대기를 리스트에 넣는다. (원본 막대기는 삭제) 2. 리스트 오름차순으로 정렬 3. 가장 짧은 막대기의 절반을 제외한 나머지 합계가 x보다 크거나 같으면? 가장 짧은 막대기의 절반 하나를 제거한다. 이 과정은 합==x일 때 종료 x=int(input()) array=[64] while sum(array)>x: # 합>x # 1번 min_value=min(array) # 가장 짧은 막대를 절반으로 나눈다. array.remove(min_value) array.append(min_value//2) array.append(min_value//2) array=sorted(array) if sum(array)-min_value//2 >=x: array.remov..

[n14502] 연구소 in python

너무 어렵다 ㅠㅠ 어려어ㅜ... 혼자 끙끙 고민하다가 결국 인터넷에서 풀이를 찾아봤다! 바이러스 퍼지게 하는 건 재귀함수로 하면 될 것 같았지만, 벽을 어디에 세워야할지 정하는 기준을 몰라서 헤맸던 문제 일단 바이러스가 있는 위치를 리스트로 저장하기 벽 선택하는 함수 1개 바이러스를 퍼트리는 함수 1개를 구현 1. 벽 선택하는 함수 벽 count가 3 미만인 경우와 count가 3인 경우를 나눠서 생각해줘야한다. 벽 count가 3 미만이라면? > 벽을 선택하는 과정이 들어가줘야한다. 경우의 수가 많이 없으므로 처음부터 끝까지 for문을 돌린다. (총 횟수 : n*m-start ) 현재 위치가 빈 벽이면 벽을 세우고 재귀함수를 호출! (그 자리에서부터 다시 벽을 세울 자리를 탐색) 재귀함수의 수행이 끝나..

[n14888] 연산자 끼워넣기 in python

이 문제도 역시나 백트래킹 python3로 돌리면 시간초과가 나서 pypy3로 돌렷다 ㅠㅠ 그래도 시간이 많이 나오긴 하는데 효율적인 코드를 좀 뒤져봐야 할 것 같다! n = int(input()) array = list(map(int, input().split())) operator = list(map(int, input().split())) # +, -, *, // str_operator = [] for idx, i in enumerate(operator): if idx == 0: for j in range(i): str_operator.append('+') continue elif idx == 1: for j in range(i): str_operator.append('-') continue eli..

[n10819] 차이를 최대로 in python

n = int(input()) array = list(map(int, input().split())) visited = [0 for i in range(n)] answer = 0 new_array = [] def dfs(cnt, new_array): global answer if cnt == n: answer = max(answer, sum(abs(new_array[i]-new_array[i+1]) for i in range(n-1))) return for i in range(n): if visited[i]: #방문한 곳이라면? continue visited[i] = 1 new_array.append(array[i]) dfs(cnt + 1, new_array) visited[i] = 0 new_array..

[n1535] 안녕 in python (배낭문제)

1535번 안녕 문제는 브루트포스 알고리즘, 배낭 문제에 해당한다. (처음에 내가 생각했던 풀이) itertools 라이브러리 combination을 이용하여 먼저 경우의 수를 찾고 그 수들 중에 조건을 만족하면서 값이 최대인 수를 출력하게끔 했다. answer에 아무 숫자가 들어가있지 않다면 조건에 해당하는 경우가 하나도 없다는 것을 의미한다. 그래서 0을 출력하게끔 처리해야 valueError가 발생하지 않는다. 제한 시간은 2초인데 실행 시간이 1.2초 나와서.. 내 코드보다 더 효율적인 코드를 찾아 떠나보았다. import itertools person = int(input()) loss = list(map(int, input().split())) smile = list(map(int, input..

[n1063] 킹 in python

문제 이해를 잘못해서 시간을 꽤 소요했다 ㅠㅠ 킹 도착 위치에 돌이 잇으면 그때만 킹과 돌의 위치를 모두 변경하는 것이고 돌이 도착위치에 없다면 킹의 위치만 움직여주면 된다. 이동 방향은 dictionary, index를 이용했다. ord : 65 -> A chr : A -> 65 # T,RT,R,RB,B,LB,L,LT dx = [-1, -1, 0, 1, 1, 1, 0, -1] dy = [0, 1, 1, 1, 0, -1, -1, -1] dic = {'T': 0, 'RT': 1, 'R': 2, 'RB': 3, 'B': 4, 'LB': 5, 'L': 6, 'LT': 7} king, dol, n = input().split() king = list(king) # 열, 행 dol = list(dol) # 열, ..

[n14916] 거스름돈 in python

동전의 개수가 최소? 11 12 13 14 15 16 17 18 19 20 숫자 1과 3만 제외하면 어떤 숫자든 5랑 2로 나누어짐 1이랑 3만 안 될뿐!! 17원 5원 * 3개 , 2원 * 1개 13원 5원 * 2개 x 5원 * 1개, 2원 * 4개 11원 5원 * 2개 , 2원 * 1개 , 1이 초과된다 x 5원 * 1개 , 2원 * 3개 n = int(input()) cnt = 0 temp = n % 5 # 나머지 if n == 1 or n == 3: print(-1) exit(0) elif temp % 2 == 0: # 2로 딱 떨어지면 cnt = n // 5 + temp // 2 print(cnt) exit(0) else: cnt = n // 5 - 1 + (temp + 5) // 2 print..

카테고리 없음 2021.10.08

[n11504] 돌려 돌려 돌림판 in python

ex[0]은 x의 맨 앞자리 수 ey[0]은 y의 맨 앞자리 수 new_array를 만들어서 idx 에러 방지함 사실 index를 어떤식으로 처리해야 하나 고민했음. 예제1) array가 [3 7 8 3 1 9 2 7]라고 생각해본다. m = 3 x= 200 y=311 z가 x보다 크면서 같고, y보다 작으면서 같을 경우에만 카운트를 진행한다. 따라서 x의 맨 앞자리 수 2와 y의 맨 앞자리수 3을 이용하면 손쉽게 값을 구할 수 있다. 리스트에서 2의 위치를 전부 찾는다. 6번째 위치에서부터 시작해서 총 3번의 이동을 통해 z를 만들어야한다. 그리하여 z의 값은 2 7 3 7이 리스트의 맨끝이니까 앞으로 다시 돌아가야하는데 이 과정을 코드로 작성하니 좀 지저분해서 new_array를 만들었다. array..

[탈잉 수강 후기] 월간 코드리뷰 ver_0.1 | 개발자로 성장하기 위해 꼭 필요한 강의

개발자로 성장하는 방법에 대해 고민하던 찰나 우연히 월간 코드 리뷰 강의에 대해 알게 되었습니다. 현직 개발자분들이 직접 성장하기 위해 노력했던 과정에서 깨달은 노하우를 공유해주신다하여 고민 없이 바로 결제하였습니다. 총 4시간 동안 강의가 진행되었지만 저한테는 전혀 길게 느껴지지 않았습니다. 평소에 궁금했던 내용을 주제로 강의를 해주셨기 때문입니다. QnA 시간은 10:40~ 11:00로 예정되어 있었습니다. 하지만 올라온 질문의 양이 꽤 많았어요.. 그래서 제가 했던 질문은 답변을 못 받겠구나 생각하고 있었는데 개발자분들이 마지막 질문까지 다 답변해주셨어요 ㅠㅠ (쏘 쓰윗..) 그래서 예정시간보다 50분이 지난 11시 50분에 실강이 종료되었습니다. 이번 강의에 대한 짧은 후기(?)는 돈이 하나도 아..

[n1411] 비슷한 단어 in python

(풀이) 조합을 이용해서 일단 경우의 수를 먼저 뽑았다. 그리고 두 개의 리스트를 이용하여 탐색을 진행한다. (단어 A와 단어 B가 일대일 관계여야한다는 거!) ex) aa ab A B a - a 다음 문자열 탐색에서 a 는 무조건 a랑 이어져야 한다. a - b a랑 a랑 이어져야 하는데 a랑 b랑 이어져서 카운트는 하지 않는다. ex) abca zbxz A B a - z 다음 문자열 탐색에서 a 는 무조건 z랑 이어져야 한다. b - b 다음 문자열 탐색에서 b는 무조건 b랑 이어져야 한다. c-x 다음 문자열 탐색에서 c 는 무조건 x랑 이어져야 한다. a - z a가 z랑 잘 연결되었으니까 문제 없음! 이 예시 같은 경우에는 결과값에 포함 from itertools import combinatio..

[n13900] 순서쌍의 곱의 합 in python

https://www.acmicpc.net/problem/13900 13900번: 순서쌍의 곱의 합 첫 번째 줄에는 입력 받을 정수의 개수 N(2 ≤ N ≤ 100,000) 두 번째 줄에는 N 개의 정수가 주어진다. 이때 입력 받는 정수들의 범위는 0이상 10,000 이하이다. www.acmicpc.net 1. 메모리초과 -> 조합 함수 사용 # from itertools import permutations, combinations # # num = int(input()) # inp = list(map(int, input().split())) # for i in inp: # arr=list(combinations(i,2)) # arrs = list(combinations(inp, 2)) # result ..

[n1515] 수 이어 쓰기 in python

(처음 생각) 처음에는 문자열 말고 리스트로 받아와서 작업을 진행했다. 그랬더니 인덱스 처리할 부분때문에 계속 문제가 발생했다. 로그님의 도움을 받아 겨우 몇 시간만에 풀어낼 수 있었던 문제.. :( 문자열 문제는 너무 어려웡.. 이 문제는 이해하는 것부터 어려웠다.. 그래도 문제는 결국 이해했지만! ((이 문제는 문자열로 풀면 훨씬 간단하다는 거..)) 예제 4번) 82340329923 8 12 13 14 20 23 24 29 39 42 43 에서 임의의 숫자를 빼낸 결과물이 82340329923이다. 이 문제는 1부터 시작해가지고 입력값(82340329923 = temp)의 0번째 위치의 값과 비교하면서 결과값을 찾아나간다. num는 1부터 시작해서 +1씩 증가한다. 만약 num의 맨 앞자리 숫자와 ..

[n18511] 큰 수 구성하기 in python

(풀이) 모든 수를 다 따져야 한다 (중복포함) 이때는 순열 + 중복허용을 하는 Product 함수를 사용해야 한다. >> 중첩 루프에 해당하는 데카르트 곱 https://docs.python.org/3.8/library/itertools.html itertools — Functions creating iterators for efficient looping — Python 3.8.12 documentation docs.python.org permutations는 순열이지만 중복 x combination은 조합, (순서 X) list(product(배열, repeat=숫자)) >> [('1', '1', '1'), ('1', '1', '5'), ('1', '1', '7'), ('1', '5', '1'), ..

[n2304] 창고 다각형 - 파이썬

https://www.acmicpc.net/problem/2304 2304번: 창고 다각형 첫 줄에는 기둥의 개수를 나타내는 정수 N이 주어진다. N은 1 이상 1,000 이하이다. 그 다음 N 개의 줄에는 각 줄에 각 기둥의 왼쪽 면의 위치를 나타내는 정수 L과 높이를 나타내는 정수 H가 한 개의 www.acmicpc.net (문제) 창고 다각형의 면적이 가장 작은 창고를 구하는 문제 지붕을 만드는 규칙 지붕은 수평 부분과 수직 부분으로 구성되며, 모두 연결되어야 한다. 지붕의 수평 부분은 반드시 어떤 기둥의 윗면과 닿아야 한다. 지붕의 수직 부분은 반드시 어떤 기둥의 옆면과 닿아야 한다. 지붕의 가장자리는 땅에 닿아야 한다. 비가 올 때 물이 고이지 않도록 지붕의 어떤 부분도 오목하게 들어간 부분이 ..

[n2567] 색종이2 - 파이썬

https://www.acmicpc.net/problem/2567 2567번: 색종이 - 2 가로, 세로의 크기가 각각 100인 정사각형 모양의 흰색 도화지가 있다. 이 도화지 위에 가로, 세로의 크기가 각각 10인 정사각형 모양의 검은색 색종이를 색종이의 변과 도화지의 변이 평행하도록 www.acmicpc.net (문제) 검은색 영역의 둘레 길이를 구하는 문제 (처음 생각) 겹치는 구간은 생각하지 못해서 헤맸다 처음에 생각해냈던 풀이는 검은 상자 전체를 감싸는 사각형의 둘레를 구하는 건줄 알았음. (문제를 제대로 읽자!) (풀이) 일단 상자에 해당하는 공간들을 1로 채운다. 배열은 101 X 101 > 100으로 하지 않는 이유? 상하좌우를 파악할 때 인덱스 범위 밖으로 벗어나는 걸 미리 방지하기 위함..

[제주코딩베이스캠프] 눈떠보니 코딩테스트 전날 | 코딩테스트 Final 메서드 정리

https://www.inflearn.com/course/%EC%BD%94%EB%94%A9-%ED%85%8C%EC%8A%A4%ED%8A%B8-%EC%A0%84%EB%82%A0/dashboard 눈떠보니 코딩 테스트 전날 - 인프런 | 강의 다가오는 코딩 테스트에 대비하여 기본적으로 알아야 할 개념을 복습하고 Python, Javascript를 통해 알고리즘 문제를 풀어볼 수 있습니다., [사진] [사진][사진][사진] [사진] [사진] 혹시 다들 이런 경 www.inflearn.com 눈떠보니 코딩테스트 전날 강의 듣고 꼭 기억해야 하는 내용 정리 (이 게시글은 제주코딩베이스캠프 후원을 받아 제작되었습니다) filter(함수,리스트 or 튜플) : 여러 개의 데이터로부터 일부의 데이터만 추려낼 때 사용한..

[n1743] 음식물 피하기 | python | BFS

https://www.acmicpc.net/problem/1743 1743번: 음식물 피하기 첫째 줄에 통로의 세로 길이 N(1 ≤ N ≤ 100)과 가로 길이 M(1 ≤ M ≤ 100) 그리고 음식물 쓰레기의 개수 K(1 ≤ K ≤ N×M)이 주어진다. 그리고 다음 K개의 줄에 음식물이 떨어진 좌표 (r, c)가 주어진다 www.acmicpc.net (처음 든 생각) BFS로 푸는건가? DFS..? 일단 BFS로 한 번 해보자! (풀이) 어마무시하게 시간이 오래 걸렸다.. ㅎ... 마지막 for문을 비효율적으로 돌려서 그런가... ㅠㅠ 현재 위치에 음식물 쓰레기가 있는 경우(1)에만 bfs를 작동시켰다. bfs가 작동되면 그리고 음식물쓰레기가 현재 위치에 있다면 num+=1 없으면 그냥 넘어간다. 현재..

[n1713] 후보 추천하기 in python

https://www.acmicpc.net/problem/1713 1713번: 후보 추천하기 첫째 줄에는 사진틀의 개수 N이 주어진다. (1 ≤ N ≤ 20) 둘째 줄에는 전체 학생의 총 추천 횟수가 주어지고, 셋째 줄에는 추천받은 학생을 나타내는 번호가 빈 칸을 사이에 두고 추천받은 순서대 www.acmicpc.net (문제) 추천받은 학생의 사진을 사진틀에 게시하고 추천 받은 횟수를 표시하는 문제 - 비어 있는 사진틀이 있는 경우 - 비어 있는 사진틀이 없는 경우 - 현재 사진이 게시된 학생이 추천받은 경우 총 3가지의 경우의 수가 있다. 비어 있는 사진틀이 있는 경우 : 그냥 사진 추가하면 된다. 비어 있는 사진틀이 없는 경우 추천 횟수가 적은 학생의 사진을 삭제한다. 만약 추천 횟수가 적은 학생이..

[n9934] 완전 이진 트리 in python

https://www.acmicpc.net/problem/9934 9934번: 완전 이진 트리 상근이는 슬로베니아의 도시 Donji Andrijevci를 여행하고 있다. 이 도시의 도로는 깊이가 K인 완전 이진 트리를 이루고 있다. 깊이가 K인 완전 이진 트리는 총 2K-1개의 노드로 이루어져 있다. (아래 www.acmicpc.net (처음 든 생각) 2중 for문으로 되려나... -> for문 + while문으로 시도했으나 깔끔하게 실패! 좀 더 고민하며 삽질하다가 결국 풀이 찾아보기.. 문제 자체로만 읽고 순서를 어떻게 처리해줘야하지 고민만 했는데! 다른 블로그 풀이를 보니까 이렇게 깔끔하게 풀리는 걸.. 아직 갈길이 멀다는 걸 느꼈던 하루 :) (풀이) 이 문제는 재귀함수로 풀어주면 이렇게 깔끔한..

[n17521] Byte Coin in 파이썬

https://www.acmicpc.net/problem/17521 17521번: Byte Coin 입력은 표준입력을 사용한다. 첫 번째 줄에 요일 수를 나타내는 양의 정수 n과 초기 현금 W(1 ≤ n ≤ 15, 1 ≤ W ≤ 100,000)가 주어진다. 다음 n 개의 줄에서, i번째 줄은 i일의 바이트 코인 가격을 나 www.acmicpc.net (처음 풀이) 매수 시점과 매도 시점을 먼저 파악하자 - ! 매수는 가장 쌀 때, 매도는 가장 비쌀때! 매수는 하락 곡선 -> day -> 상승곡선 , day 시점에! 매도는 상승 곡선 -> day -> 하락 곡선, day 시점에! (풀이) 첫 날엔 무조건 매수 마지막 날엔 무조건 매도 button으로 지나온 구간이 상승 구간이었는지, 하락 구간이었는지 판단..

[n16507] 어두운 건 무서워 - python

https://www.acmicpc.net/problem/16507 16507번: 어두운 건 무서워 첫 번째 줄에는 사진의 크기를 의미하는 정수 R, C (1 ≤ R, C ≤ 1,000)와 사진 일부분의 밝기 평균을 알아볼 개수를 의미하는 정수 Q (1 ≤ Q ≤ 10,000)가 주어진다. 다음 R개의 줄에 걸쳐 R×C 크기의 사 www.acmicpc.net (처음 든 생각) 이건 무조건 완탐으로 풀면 안된다는 거..? 시간초과가 뜰 것 같았다. 근데 도저히 방법이 떠오르지 않아서 힌트를 보니 누적합 문제라고 한다.. 누적합 문제 1차원 배열로는 풀어봤으나, 2차원 배열로 풀어본 기억은 없는 것 같다. 그래서 개념 정리부터 싹 하고 왔다! (누적합, 구간합 개념 정리) 구해야 하는 건 빨간 영역의 합 A..

[제주코딩베이스캠프 굿즈] 3번째 선물 후기, 노트북 파우치!

제주코딩베이스캠프 서포터즈 3번째 굿즈 선물 후기를 작성해보려고 합니다 :) 이번 선물이 사실상 제가 가장 필요하고 기대하던 굿즈인데요! 바로 노트북 파우치입니다!! https://smartstore.naver.com/weniv_store/products/5318744960 Hack Your Life 개발자 노트북 파우치 : 우당탕탕 라이캣의 실험실 [우당탕탕 라이캣의 실험실] 위니브 월드의 성공한 CEO 라이캣이 또 저질렀다! 이번에는 굿즈 사업?! smartstore.naver.com 위 링크가면 상품 상세 내용 보실 수 있어요! 누가 봐도 개발자스러운 노트북 파우치,,,, 파우치 앞면쪽에는 파이썬 코드가 자수로 새겨져있어요! 개발자의 일상을 담은 코드가 적혀있네요 (제주코딩베이스캠프 서포터즈 하며 ..