이 부분을 수확해야 되는데..정답은 나오지만 선생님은 어떻게 하셨을까....나는 예외도뜨고 exit_code_1이 뜬다 ㅠㅠ와 이걸 변수로 처리하네...와 개쉽게 하시네.... 내 능지가 부끄러워 지는 순간이다.. ㅎㅎ..
if else 문 2번 줄이셨네... 에휴 안유진 바보
pop 과 append 랑 inset 이용100점 맞았다 ㅜㅜ한번에 줄인 것과변수 줄인것...참고 메모..다음번에 나도 변수를 최대한 줄이는 방법을 다시 생각해보고 올려보자
이렇게 가장자리를 0으로 초기화 하는 방법..? a = \[07 for \_ in range(n)]0 으로 77 하고 넣을 수 있는가 했더니.. 그건 너무 복잡하고..했더니..배열에서 한번 나가나보다...?이유는 모르겠다.이유 알았다. 0이 부족한거였다.2가 가로세로
for문 많이 만들었어라도 했었어야됐네....앞으로는 죽이되든 밥이되든 결과는 완성시켜보자..그리고 sum 쓰신거 유념하자 ! 그리고 나는 tmp = ai ch1tmp += 1 이랬는데, 선생님과 다른점은ai 는 tmp에 저장하지 않고
앞에서 읽으나 뒤에서 읽으나 같은 수를 구하여라100점 나왔다 ㅎ 더럽긴 하지만 이제 강의를 봐볼까??
이분검색이란?: 이진 검색 알고리즘(binary search algorithm)은 오름차순으로 정렬된 리스트에서 특정한 값의 위치를 찾는 알고리즘이다. 처음 중간의 값을 임의의 값으로 선택하여, 그 값과 찾고자 하는 값의 크고 작음을 비교하는 방식을 채택하고 있다. 처
! 하기 전 궁금한 것!이렇게 숫자를 \\n을 기준으로 입력받으면 어떻게 list에 집어넣을까?이렇게 하나하나 읽어야 한다.문제 hint>>가장 큰 랜선 길이는 1~802 이다. 이분 검색을 통해 몇개 만들 수 있는지 세고, 많으면 또 중간값을 바꾸고(키우고), 적으면
일단 뇌절이었다.. 뭐지..?결정 알고리즘 배웠는데 이건... 너무 어렵잖아 ㅋㅋㅋㅋ문제hint>>최소 용량은 lt : 1최대 용량은 rt(한장에 다 담는 것) : 45mid : 23을 세장에 다 담을 수 있는지 확인한다.100점,....힌트 보면 할만 한데 이건 내
..힌트 봐야겠어....문제 hint>> 답의 범위를 어떻게 지정할까?가장 가까운 말의 거리는 1일 수 있겠지.lt 는 1, rt 는 9 로 하여 (1+9)/2 를 통해최대 거리는 5로 두고 생각한다. (1+9)/2 = 51\. 모든 말들의 거리는 5보다 크거나 같아야
튜플 자료구조로 만들어서 끝나는 시간으로 정렬하여 계산 하더라..튜플로 값을 넣을때는list = \[]a, b = map(int, input().split())list.append( (a,b) )로 넣더라이때 람다함수 사용하는데 sort(key = lambda x :
근데 약간 힌트 봐버렸다..sort 한 후 막히길래..!!반대로 sort 하는 것이 주요 끼 뽀인뜨!!!이제 x0 부터 xn 까지 뒤에 오는 값보다 크면 된다...170 72 >> 얜 젤 뚱뚱해서 괜찮 180 70 >> 얘가 170 보다 큰지 확인172 67 >> 얘가
가장 높은 곳에서 낮은 곳으로 m회 높이 조정한 후 차이 값 찾기100점 나왔다뭔가 아쉬운 점?배열 자체가 지저분 하다는거.. ㅎㅎ아휴우 참 깔끔하시네-a0+= 1 하셨구나..
내가 생각한 코드 선생님 코드1 선생님 코드 2 deque
lt 와 rt를 만들어서a 2 4 5 1 3 중 작은 값을 가져와야 한다.last 를 0으로 초기화한다.튜플값으로 (2, L) 같은 느낌으로 저장(4,L)(3,R)... 해서 lt 가 rt보다 크거나 lt와 rt 모두 last 보다 클 경우 break 되도록
배열3개에 for문 3개가 좀 오바라고 생각해서 이렇게 했지만 또 생각해보았다...근데 이걸 for문 안에 n-1, -1, -1 이 아니라 좀 더 깔끔하게 할 수는 없을까...배열seq 0 0 0 0 0 0 0 0 만들고1 2 3 4 5 6 7 8 을 각각 넣어주는데1
더럽다.. 해결이 안된다.. 처음 두가지는 알겠고, 그 이후의 수를 넣는 법을 모루겠당?m 번 반복한 수를 찾아냈고, 이후에 리스트 합치기만 하면 될 것 같은데 아마 그건... 좀....LIFO Last In First Out 이라는 의미이다.리스트를 이용해서 차례차례
나는 ( 의 경우에는 cnt=+1 해주고 ) 의경우에는 두가지로 나뉘는데1\. ) 의 앞이 ( 의 경우에는 슬라이스 해주므로 cnt -= 1 한 후 res =+ cnt 를 해주어 더했다... 2\. ) 앞이 ) 의 경우에는 막대를 닫느 것이므로 cnt += 1 한 후
할 줄 몰라서 선생님 코드를 바로 봤다.이건 어려워서 나중에 다시 해봐야 될듯 하다..
한 2줄 더 줄이셨네;; 이정도는 유진아 너도 생각할 수 있지 않니?
큐 FIFO 로, First in First out 이라는 의미이다. Stack은 Last in First out 이었다.. python 은 라이브러리에 deque 라는 구조로 제공한다. 뒤쪽에서 꺼내는 것이 append, pop 이 가능하다. 근데, 앞쪽에서 꺼내
못 풀고 바로 인강 봤다. 근데, 이번에 알게 된것이enumerate 활용이랑 for문 활용인데.. 이걸 좀 계속 사용해야 편할 것 같다.Q=(pos,Val) for pos, Val in enumerate(list(map(int,input().split()))) i
나 왜 안되냐...need = "CBA"리스트 dq | c | B | A |plan에 짜여있는 대로 위를 확인하면서차례대로 pop 하도록 한다..pop 했는데 일치하지 않는다면 바로 그만두도록 한다만약 list가 다 비었다면 plan이 YES인 것이다.궁금했던것 >>
dictionary의 사용법에 대해서 배웠다.dictionary는 key갑과 val 값을 동시에 가진다. 또한.items()라는 함수를 사용해서 원소에 하나하나 접근할 수 있다.dictionary는 list와 다르게 index로int 이외에 str, chr 등을 받을
왜 80 일까 엉어엉엉 ㅠㅠㅠ 이유를 모르겠다 ㅠㅜㅠ기존 값이 없어서, dict 내장함수를 사용해서 str1.get('A',0) 값이 없으면 0을 return한다는 것.그래서 strA = str.get('A',0)+1 로 더해준다.각 키 값에 value 를 넣어주었다.
리스트로 풀라고 요구할 수도 있다. 아스키 넘버로 풀어보자알파벳 52개로..
Push 하고 up 하는 방식이다.
재귀함수 >> 자기가 자기 자신을 호출하는 함수.재귀함수를 사용할 때는 스택을 이용한다.재귀함수는 for문의 역할을 한다.이러면 3 2 1 출력된다만약 !! 1 2 3 으로 출력하고 싶다면 ? DFS와 print의 위치를 바꿔라재귀함수는 스택을 활용해서 진행되기 때문
줄여보았다 리스트 없이..근데 return 0 되어되 되나 ? ㅎㅎ선생님은 tmp 변수도 안두셨고, return 으로만 함수를 종료하셨다... 후 오늘도 배웠다 !!!
트리 노드값을 봐보자규칙이 있다면 이러하다부모 노드값 ------------- (1)................................................../.......|자식 노드값 ------(부모2) (부모2+1)자기의 일을 우선으로
못풀겠어서..hint: 1 2 3 이 있다면먼저 1을 넣을건지? 넣지 않을건지 >> 다음으로 2를 넣을건지? 넣지 않을건지 >> 다음으로 3를 넣을건지? 넣지 않을건지 >> ... 진행시킨다2 2 2 -1 (공집합 빼면)경우의 수 7가지 이다.............
근데 코드가 좀 길다
내가 생각해도 리스트 하나 더 만들어서 append하는 건 비효율 적인데..time limit 났다..if name == "main ":이 아래 선언한 변수는 전역변수로,어떤 함수에서든 접근 가능하다 !!if name == "main ": cnt = 5 DFS1()DF
input = sys.stdin.readline 입력이 많을 때 입력속도를 빠르게 하는 법s=input.rstrip(); 그냥 문자열을 읽으면, 문자열 읽을때 줄바꿈 기호를 제거해주고 읽게 해주는것. 위를 사용하여 str읽으려면 해당 줄도 입력해줘라.
내가 생각한 코드..생각 못해서 힌트 보고 맞혔다..
?? 왜 왜지??힌트봤다 !!!check 리스트를 만들어서 확인하라..
1 2 3 4 가 일렬로 나열되어 있을 때 하나씩 더해가는 것이 된다. 3 5 7 이렇게 하나의 숫자들이 되는 것이다 8 15 23 이렇게 된다. 하지만 우리가 찾아야 하는 것은 마지막이 16이 되는 경우이다. 첫 줄을 1 2 3 4 배열을 다양하게 해서 찾으면 될 것
조합 구하기 내가 생각한 코드 정말 오래 걸렸디... 근데 알고보니 그냥 기준 값 하나만 주면 되었던 것을... 과연 선생님은 얼마나 더 쉽게 하셨을까?
잘 풀긴 했지만.. 가지(s) 가 s+1인줄 알았다... 사실은 i+1이 되는 것이지 !!가지는 규칙적으로 유동적으로 움직이는 값이므로..for문 돌면서 커져야 하기 때문에..!!똑같당
이렇게 계수 만들었던 공식 기억하니 ? 한 part5.8 에서..여기서 트리를 통해 순열을 구했는데, 간단히 permutation을 활용하면 순열 n! 가지가 구해진다.import itertools as it fos x in permutations(a)4!24가지의 가
조합 구성에서 중복을 어떻게 배제할까...?어!!! 조합은 permutations 가 아니라 combinations를 쓰면 되는구나 ㅋㅋㅋㅋㅋ라이브러리 이름 자체가 다름...
너무 간단해서 민망한데..규칙이랄게 없다 ㅋㅋㅋ ;;노드와 간선의 집합을 그래프라고 한다.노드가 동그란 것이고, 선이 간선이라고 한다.문제를 풀기 전에무방향 그래프란 어느 방향으로도 갈 수 있는 그래프 이고,항상 행 번호에서 열 번호로 노드가 이동할 수 있다고 이해하면
하 두시간 생각했는데 40점 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ휴 ㅠㅠㅠㅠㅠㅠ뭐지??일단 인덱스 0번 안쓴점이 같고... 하나 다른점은 인자를 덜 준것.지금까지는 그러하다..여기가 함수인데..나는 뭐가 다른지 모르겠네 ?? 왜 결과가 다르게 나올까 ?왜 5로 했냐ㅋㅋㅋㅋㅋ
기본적으로 배웟던 DFS로 하는데..40점 나오고 심지어엄청 오래걸려서 fix 했다..;;공개할 필요 없지만 굳이 풀이를 보이자면DFS만 참고하면 이렇다..강의나 봐야지두가닥으로 뻗으면 된다예를들어 {1 2 3 4 5} 에서1을 푼다, 풀지않는다2를 푼다, 풀지않는다3
다시 해봐라.. L에 초점을 둔 것이 중요..!
어휴 간만에 풀었다 ㅠㅠㅠ상태트리로 문제를 풀으셨다..
나는 능지가... 휴.......1~13g 까지 잴 수 있는 경우..
다행 ..문제가 DFS 같다면 상태트리를 그려야 하고 그대로 구현해야 한다,와 역시 훨씬 깔끔해..안유진 개선해야 될 부분1\. 굳이 이차원 배열만든 것 >> 일차원 배열로 가능2\. 굳이 append 하며 sum을 한번 더 한것 >> += 으로 하면 된다.3\. 굳
다시 풀어보자 !! 조건 저런식으로 많이 줘도 된다는 점 배웠네
BFS란?? 선생님 코드
BFS란??
이런식으로 사과 격자 탐색
선생님 코드
사과나무
드디어 했음..BFS는 근데 아직 어려움 ㅎㅎ이전 문제와 다른 것은, 시작 점과 끝 점이 다르다는 점이다.또한 값이 점점 커지면서 상하좌우로 움직일 수 있다.만약 상 하 좌 우 중 현재위치하는 값보다 작은 경우에는 위치 이동이 불가하다.나와 다른 점1\. 변수 이름이
한 행씩 탐색한다1을 찾는다DFS 호출 하여 상 하 좌 우 탐색1을 0으로 바꾼다개수 counting 하여 cnt에 저장cnt를 res.append(cnt) 한다.이어서 행 탐색한다.1을 찾는다마지막 행까지 탐색한다..res 출력먼저 팁!숫자는 split() 안해도 하
이 문제는 8방향을 탐색한다.이 문제는 전 문제 연습이다.
check라는 이차원 리스트 만들어서 탐색하라
첫번째 익은 토마토가 있는 곳Q(1,2) (3,5) 안익은 토마토롤 뻗어 나간다.pop(0) append((1,3)) append((1,1)) ... 상태트리로 뻗는다.첫번째 익은 토마토가 있는 곳Q(3,5) (1,3) (1,1)안익은 토마토롤 뻗어 나간다.pop(0)
모든 열을 확인하는 것은 비효율 적이므로,도착지 열에서 역으로 탐색하여출발지 열번호를 확인하면 된다.왼쪽 오른쪽 위를 확인하여, 1인 곳을 ch 배열 값을 1로 바꿔준다....이 방식으로 계속 타고 올라가면열 번호가 0되었을 때 좌표를 확인하면 된다.
피자 리스트와집 리스트를 만든다
DFS(7) 이면7m 짜리 네트워크 선이 주어지면, 자르는 방법의 수를 retrun 받는 것,6m 를 자르는 모든 경우의 수에 1 만 더하면 된다.5m를 자르는 모든 경우의 수에 마지막에 2만 더하면 된다.DFS(6) + DFS(7)이것을 그래로 해주는 것D(7) ↓
네트워크 선 자르기 가장 작은 해를 구하고, 점점 키워나가면서 앞에 구해놓은 해를 이용하여 현재 해를 구하고 ... n의 해를 구하고 최종적으로 필요한 해를 구한다 >> Bottom up 방식. 문제를 확장시켜서, 문제를 키워서 최종 결과를 내는 방식이다. 네트워크
bottom-up 방식\`\`pythonimport syssys.stdin = open("input.txt", "rt")n = int(input())dy = 0\*(n+1)dy1 = 1dy2 = 1for i in range(3, n+1): dyi = dyi-1 +
최대부분 증가수열 ㅛㅙㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐㅐ
최대 선 연결하기 내가 생각한 코드
가장 작은 해를 구하고, 점점 키워나가면서 앞에 구해놓은 해를 이용하여 현재 해를 구하고 ... n의 해를 구하고 최종적으로 필요한 해를 구한다 >> Bottom up 방식.문제를 확장시켜서, 문제를 키워서 최종 결과를 내는 방식이다.네트워크 선 자르기(Bottom-U
dfs(7)6m를 자르는 경우의 수 +1(m)5m를 자르는 경우의 수 +2(m)...DFS(7) = DFS(6) + DFS(5)DFS(6) = DFS(5) + DFS(4)...DFS(3) = DFS(2) + DFS(1)이를dy 배열에 저장한다.1 2 3 4 5 6 7□
철수는 계단을 오를 때 한 번에 한 계단 또는 두 계단씩 올라간다. 만약 총 4계단을 오른다면 그 방법의 수는 1+1+1+1, 1+1+2, 1+2+1, 2+1+1, 2+2 로 5가지이다. 그렇다면 총 N계단일 때 철수가 올라갈 수 있는 방법의 수는 몇 가지인가?
N개의 돌로 다리를 만들어 놓았다. 한번에 한칸 또는 두칸씩 건널 수 있음개울을 건너는 방법의 가지수는? 1 2 3 4 5 6 7 + 도착지ㅁ ㅁ ㅁ ㅁ ㅁ ㅁ ㅁ + 도착지첫번째 칸 가는 경우의 수 : 12번째 칸 가는 경우 : 2 1 2 3 4
수열이 주어지면 오름차순을 가장 길어지는 최대 부분 증가수열을 구해라.ex) 2, 7, 5, 8, 6, 4, 7 의 경우에는ans) 2, 5, 6, 7, 12 가 가장 긴 증가수열이다.첫째 줄에는 데이터의 수 N(2<=N<=1000)둘째 줄에는 N개의 입력
1부터 N까지 오름차순으로 나열되어 있다.서로 선이 겹치지 않고 최대 몇 개의 선을 연결할 수 있는 지 구하라ex)첫 줄에 자연수 N(1<=N<=100)이 주어집니다.두 번째 줄에 1부터 N까지의 자연수 N개의 오른쪽 번호 정보가 주어집니다. 순서는 위쪽번호
밑면이 정사각형인 직육면체 벽돌들을 사용하여 탑을 쌓고자 한다.(조건1) 벽돌은 회전시킬 수 없다. 즉, 옆면을 밑면으로 사용할 수 없다.(조건2) 밑면의 넓이가 같은 벽돌은 없으며, 또한 무게가 같은 벽돌도 없다.(조건3) 벽돌들의 높이는 같을 수도 있다.(조건4)
가장 높은 탑을 구하는 프로그램 만들자첫 번째 줄에는 자연수 N(1<=N<=20)이 주어진다. 두 번째 줄부터 계곡의 N\*N 격자의 돌다리 높이(10보다 작은 자연수) 정보가 주어진다.첫 번째 줄에 (1, 1)출발지에서 (N, N)도착지로 가기 위한 최소
가장 높은 탑을 구하는 프로그램 만들자첫 번째 줄에는 자연수 N(1<=N<=20)이 주어진다. 두 번째 줄부터 계곡의 N\*N 격자의 돌다리 높이(10보다 작은 자연수) 정보가 주어진다.첫 번째 줄에 (1, 1)출발지에서 (N, N)도착지로 가기 위한 최소
최대의 가치를 구하라첫 번째 줄은 보석 종류의 개수와 가방에 담을 수 있는 무게의 한계값이 주어진다.두 번째 줄부터 각 보석의 무게와 가치가 주어진다.가방의 저장무게는 1000kg을 넘지 않는다. 보석의 개수는 30개 이내이다.첫 번째 줄에 가방에 담을 수 있는 보석의
첫 번째 줄에는 동전의 종류개수 N(1<=N<=12)이 주어진다. 두 번째 줄에는 N개의 동전의 종류가 주어지고, 그 다음줄에 거슬러 줄 금액 M(1<=M<=500)이 주어진다. 각 동전의 종류는 100원을 넘지 않는다.첫 번째 줄에 거슬러 줄 동
문제 > 입력 >첫 번째 줄에 문제의 개수N(1첫 번째 줄에 제한 시간안에 얻을 수 있는 최대 점수를 출력합니다. 정답 풀이 > - 냅색 알고리즘을 이용한다. 정답 코드 코멘트 > 냅색 알고리즘 설명 냅색 알고리즘은 담을 수 있는 물건이 나눌 수 있냐 없냐에 따
첫 번째 줄에는 도시의 수N(N<=100)과 도로수 M(M<=200)가 주어지고, M줄에 걸쳐 도로정보와 비용(20 이하의 자연수)이 주어진다. 만약 1번 도시와 2번도시가 연결되고 그 비용이 13이면 “1 2 13”으로 주어진다. 모든 도시에서 모든 도시
!입력의 첫째 줄에는 회원의 수가 있다. 단, 회원의 수는 50명을 넘지 않는다. 둘째 줄 이후로는 한 줄에 두 개의 회원번호가 있는데, 이것은 두 회원이 서로 친구임을 나타낸다. 회원번호는 1부터 회원의 수만큼 번호가 붙어있다. 마지막 줄에는 -1이 두 개 들어있다첫
3중 for 문으로 for문 안에 for문 한번 더 돌릴바에 밖에서 for문이랑 sort를 오지게 하는게 낫구나.
정육면체의 부피는 한변의 길이가 n일 때 nnn 이다길이가 1부터 n까지의 정육면체의 부피들의 합을 구하는 문제인데반복문을 이용하여 n을 세제곱 하여 합을 구하게 된다면 시간초과로 오답을 출력한다.반복문으로 구하지말고 "세제곱의 합 공식"을 이용하여 풀면 된다.참 어렵
반올림소수점 대체 출력알아야 할 것은1\. round 함수2\. format 함수 사용법 ★★★★★"{:.소수점갯수f}".format(N)