📌 아래에서 위로 쇠막대기를 겹쳐 놓고, 레이저를 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저의 배치는 다음과 같다. () (((() ()) (()) ())) (()) ① 레이저는 인접한 쌍 '()' 으로 표현된다. ② 쇠막대기의 왼쪽 끝은 여는 괄호 '(' 이고, 오른쪽 끝은 닫힌 괄호 ')' 로 표현된다. ()(((()())(())()))(()) ✔️ code import sys sys.stdin=open("input.txt") arr=list(input()) bar=0 #막대기 개수 stack=[] for i in range(len(arr)): if arr[i]=='(': stack.append(arr[i]) else: stack.pop() if arr[i-1]=='(': bar+=le..
전체 글
✔️ code def solution(a, b): answer = '' #2016-01-01: 'FRI' day=['THU', 'FRI', 'SAT', 'SUN', 'MON', 'TUE', 'WED'] date=[31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] answer=day[(sum(date[:a-1])+b)%7] return answer # solve 먼저 2016-01-01이 언제인지 알아야 한다. 만약 01-24 가 a, b로 주어졌다고 해 보면, day[24%7] 즉 'SUN' 이 바로 출력되도록 해야 하는데, 이렇게 하기 위해선 1 번째 index 가 1일에 해당하는 날짜여야 한다. 따라서 'FRI' 를 1 번째 index에 놓고 다른 요일을 작성한다...
📍 stack stack: LIFO 나중에 들어간 것이 먼저 나오고, 가장 먼저 들어간 것이 마지막에 나온다. list 를 사용해서 append(), pop() 을 이용한다. 📌 입력된 숫자의 자릿수들 중 m개의 숫자를 제거하여 가장 큰 수를 만든다. (단, 숫자의 순서는 유지한다.) ① 5276823 3 ② 9977252641 5 ✔️ code import sys sys.stdin=open("input.txt", "r") n, m=map(int, input().split()) n=list(map(int, str(n))) #str(n)으로 하나씩 접근해서 숫자로 변환 stack=[] for i in n: #스택이 비어있지 않고 #숫자가 아직 m개 제거되지 않았고 #stack에 append() 되는 숫자보..
📌 더보기 # problem: https://www.inflearn.com/course/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EB%AC%B8%EC%A0%9C%ED%92%80%EC%9D%B4-%EC%BD%94%EB%94%A9%ED%85%8C%EC%8A%A4%ED%8A%B8 📍 역수열 1부터 n까지의 수를 한 번씩만 사용하여 이루어진 수열이 있을 때, 1부터 n까지 각각의 수 앞에 놓여 있는 자신보다 큰 수들의 개수를 수열로 표현한 것을 역수열이라 한다. 예를 들어 다음과 같은 수열의 경우 4 8 6 2 5 1 3 7 1앞에 놓인 1보다 큰 수는 4, 8, 6, 2, 5. 이렇게 5개이고, 2앞에 놓인 2보다 큰 수는 4, 8,..
✔️ code def solution(N, stages): answer = [] fail_rate=[] #실패율 for i in range(1, N+1): user1=0 #도전 유저 수 user2=stages.count(i) #클리어하지 못한 유저 수 for j in stages: if i> 람다식을 사용하는 것에 익숙하지 않아 이것은 다른 풀이를 참고했다. 왜 람다식은 쓸 때마다 헷갈리는지 모르겠다. 더 많이 문제를 풀다 보면 해결되겠지 !
📌 더보기 # problem: https://www.inflearn.com/course/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EB%AC%B8%EC%A0%9C%ED%92%80%EC%9D%B4-%EC%BD%94%EB%94%A9%ED%85%8C%EC%8A%A4%ED%8A%B8 5 2 4 5 1 3 ✔️ code N=int(input()) arr=list(map(int, input().split())) new_arr=[] string='' if arr[0]arr[len(arr)-1]: if arr[len(arr)-1]>new_arr[len(new_arr)-1]: new_arr.append(arr.pop()) string+='R' e..
📌 더보기 # problem: https://www.inflearn.com/course/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EB%AC%B8%EC%A0%9C%ED%92%80%EC%9D%B4-%EC%BD%94%EB%94%A9%ED%85%8C%EC%8A%A4%ED%8A%B8 5 140 90 50 70 100 60 ✔️ code import sys sys.stdin=open("input.txt", "r") #N: 승객 수 #M: 보트 한 개에 탈 수 있는 총 무게 N, M=map(int, input().split()) kg=list(map(int, input().split())) boats=0 #구명보트 수 kg.sort() wh..
✔️ code def solution(board, moves): answer = 0 dolls=[] for i in moves: for j in range(len(board)): if board[j][i-1]!=0: #만약 인형이 있다면, dolls.append(board[j][i-1]) #stack 에 추가한다. board[j][i-1]=0 if len(dolls)>=2: #stack의 길이가 2이상이면, if dolls[-1]==dolls[-2]: #원소 2개를 비교한다. answer+=2 #비교한 원소가 같다면 제거한다. dolls.pop(-1) dolls.pop(-1) break return answer >>> input 배열이 [[0,0,0,0,0],[0,0,1,0,3],[0,2,5,0,1],[..
📌 더보기 # problem: https://www.inflearn.com/course/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EB%AC%B8%EC%A0%9C%ED%92%80%EC%9D%B4-%EC%BD%94%EB%94%A9%ED%85%8C%EC%8A%A4%ED%8A%B8 10 69 42 68 76 40 87 14 65 76 81 50 ✔️ code import sys sys.stdin=open("input.txt", "r") L=int(input()) #창고 가로 길이 box=list(map(int, input().split())) M=int(input()) #높이 조정 횟수 result=0 highest=0 lowest=0..
📌 더보기 # problem: https://www.inflearn.com/course/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EB%AC%B8%EC%A0%9C%ED%92%80%EC%9D%B4-%EC%BD%94%EB%94%A9%ED%85%8C%EC%8A%A4%ED%8A%B8 5 172 67 183 65 180 70 170 72 181 60 # solve: input 은 키, 몸무게 순대로 주어지고 다른 선수보다 키나 몸무게 둘 중 하나는 커야 하므로, 키나 몸무게 순대로 정렬한 후, 차례차례 비교해 나가면 된다. 만약 키 순대로 정렬한다면 몸무게를 비교해 나가면 되는데, 만약 다른 선수보다 키와 몸무게가 둘다 작다면 출전하지 못..