이제 백준도 시작해야겠다!!!제주도 가기 하루전, 책을 전부 배송보내서 볼게 없어서 백준을 시작하게 될줄이야 ,,, ! 각 자릿수의 정보를 끄집어 내기 위해서 나누기, 나머지 연산을 사용할 수 있다. 나 이거 2년전에 ㅋㅋ,,,, 실패했었네.,,?진짜 멍청하긴 했었나보
<코드>정수의 자릿수를 쪼갤때는 나누기와 나머지 연산자를 활용하여 구할 수 있다.다른 방법의 풀이도 생각해보자 !~
문자열 입력 -> 정수 출력 배열에 저장되는 요소는 문자열로 정수로 출력하면 아스키값이 출력된다.그러므로 '0'의 아스키값 만큼 빼주면 1,2,3,4,5... 의 숫자를 얻을 수 있다.
으아,,, 제주도 50일 살이하고 돌아왔다! 그 와중에 파이썬 백준 스터디를 해서 앞에 있는 문제들은 전부 파이썬으로 다시풀었다 그러고 단계별로 하나씩 스터디 진도대로 풀어나가고 있는 중이다 ! 그럼 바로 시작하겠다 9020 : 골드바흐의 추측 함수를 두개짜
팩토리얼 함수를 재귀형태로 구현했다.그리고 num==0일 경우도 처리해줬다.
이제 단계별로 게시물을 끊어야겠다브루트포스 첫번째 블랙잭문제는 이전 포스터에 있으므로 그 다음 문제부터 진행하겠다.부르트포스는 Brute Force 즉 그냥 무식하게 모든 케이스를 다 고려해보고 푸는 문제이므로 단순무식하게 접근하면된다.처음에는 666,1666,2666
파이썬 문제집도 다 풀어야겠다 !간단하다 그냥 평균을 생각해서 따로 R2에 저장해줄 필요없이 연산결과를 즉시 출력해주었다.설마,,, 하고 여러개 예시적어보니 이건거 같아서 제출했는데 맞췄당 ~ 처음에 month를 잘못 출력해서,, ,틀렸다,,!쳇시간 가져오는 모듈 d
딕셔너리를 활용하여 해결하는 단순 노가다 문제이다.딕셔너리 값은 바로 프린트문에서 받아주게 해서 코드의 길이를 줄였다.
문자열을 리스트로 받아서 for문을 돌리며 비교해줬다.그런데 3이상의 길이의 문자열을 입력받는다고 하였으므로 첫 그릇은 무조건 있다고 생각해서 length를 10부터 시작하게 했다
어... 간단...한 문제인데 문제내용이 진짜 맥락어디갔냥
어.. 그냥.. 리스트 입력... 음.. 끗.. 쉬운문제..
단순조건문 문제..
reversed 함수를 사용하면 리스트의 요소들을 거꿀로해서 반환해준다...! 기억하자 !
m,n을 입력받고 약수비교를 %연산자를 활용하여 비교한다.
x,y 값을 t에 따라 입력 받고 그 값들의 위치를 q1,2,3,4 axis에 저장해서 마지막에 format을 사용하여 출력한다.
그냥 ,,, 그냥 ㅇㅇ,,
어.. 음.. 그냥... 테스트마다 9개씩 m,n을 입력받으면 된다 !
딕셔너리 = key : value 를 활용했다.
정렬 단계의 첫번째 문제이다.정렬은 버블정렬로 핵심 알고리즘 코드는 이부분이다 ! 이 부분의 알고리즘이 핵심이다 !
문제 코드 해설
배열을 정렬하는 것인데 앞서 푼 오름차순이 아니라 내림차순으로 정렬을 진행하는것이다.N은 1,000,000,000 보다 작거나 같은 자연수인데 이것을 int로 생각하면 머리아프고 문자열로 생각하면 char arr10;을 선언해주면 범위내의 숫자모두 표현가능하다 ! 10
드디어 .. ! 구조체 쓰는 문제가 나왔다 ! 구조체 몇만년만이냥 진짜~!~ 그건 그렇고 파이썬하다가 씨하니깐 뭔가 더 근-본 느낌이 생긴다..! 파이썬에서는 쏠트! 하면 끝이였는뎅 헤헤... 우선 구조체에 x,y좌표를 넣을 수 있게 맴버 변수를 만들어 주고 main함
앞서 푼 좌표정렬하기 1에서 x좌표를 기준으로 정렬해주고 y좌표를 보는 방식에서 y좌표를 기준으로 먼저 정렬해주고 x좌표를 보는 방식으로 바꾸면 끝이다 .
문자의길이를 우선적으로 비교해서 정렬하고 같은길이의 문자열을 가졌으면 사전순으로 출력해야하는 문제이다.구조체로 문자열을 저장하고, 문자열의 길이를 저장할 수 있게 만들었다.병합정렬!을 또 이용해서!! 문자열길이기준으로 정렬해주는 과정을 거쳤다..! 그 후 출력할때는 s
또합정렬 ! 나중에 시간되면 다른 정렬도 사용해봐야징..그냥 간단한 문제다 나이순을 먼저고려하고 가입순서를 고려하면 되는데가입순서는 그저 먼저 입력받은 값이니깐 먼저 입력받은 값이 먼저 sortArr에 들어가게 만들었으므로 따로 손 볼 필요가없다 ! 그저 앞서 짠 병합
DFS로 접근하면 되는 백트레킹 문제이다.수학적으로 본다면 순열문제라고 보면된다...!nPm 의 순열을 구해야하는 것인데 이것을 DFS로 구현했다checklist라는 배열을 두고 중복된 값이 출력되는것을 조건문으로 막아줬다 DFS를 구현할때 재귀함수의 개념만 잘 이해하
15649 문제는 중복되는 수까지 출력해주게 했는데 이는 DFS가 도는데 두번째 for문에서 i가 항상 1부터 시작하기 때문이다 ! 왜냐하면 i =2일때 DFS(1)을 시작하면 (2,1)도 출력하게 되면 앞서 출력된 (1,2)와 겹치게 되는데 이때 cut이라는 변수를
15649 에서 check 만 없애면 되는 문제이다.
16560에서 cut을 살리고 범위를 i이하로 수정해주면 된다...! 나름 꿀인 N과M 시리즈가 끝이났당
그냥 스택의 개념문제다..!init,push,pop,peek,size,empty의 함수를 구현하면된다.문제를 맞춘 후 다른 사람들의 코드를 봤는데 씨플플 라이브러리 부럽당,,,아 각설하고 ! 다른 사람의 코드의 POP부분을 보고 살짝 충격을 받았다 바로 return p
int top=0;char arr1001, stack1001;int main(void){ int t; scanf("%d ",&t); for(int i=0;i<t;i++) //반복문 실행 { fgets(arr, 1001, stdin
생각보다 간단한 문제이다 (가 들어오면 cnt 를 하나 올려주고 )들어오면 cnt 를 하나 내리는 방식으로 진행하는데 cnt가 음수가되면 문제조건에 위배되므로 탈출하게 만들면된다 !
PUSH 와 POP 을 응용한 문제이다.0이 아닌 숫자가 들어오면 푸쉬를 해주고 0이 들어오면 topIndex에 위치한 값을 팝 해주면 되는것이다!!처음에 런타임 에러가 떠서 새로작성한 코드가 위의 첫번째 코드인데 ... 런타임에러 뜬 이유 분석해보니 스택의 길이 떄문
큐에 관한 문제이다 문자열을 받는 방식은 앞서 푼 스택과 동일시하게 진행하면된다.그리고 큐의 엔큐와 디큐에 나머지 연산자를 사용하는것은 원형큐를 활용하기 위한 것이다. 그냥 위의 큐에서 범위만 바꿔주니 맞았당...뭘 정확히 체크해야할지는 나중에 .. ! 하겠다 헿..아
음.. 코딩대회 준비로 파이썬을 언어로 선택해서 파이썬연습,...!해야해서 언어를 바꾸게됐당...
그리디 알고리즘이다 .. ! 탐욕스러운.,.! 최적의해가 나온다는 보장은 없지만 우아악 ! 하는 알고리즘이다 ! 재산 1000엔에서 머니만큼 빼고 그 재산을 코인배열의 각요소들 순서대로 나누는것으로 카운트를 올리는 방식이다 .. !
그냥 이프문,,,반복문,,, 해서 3으로 먼저나누고,, 그 다음은 2로나누고,, 안되면 1빼고 이렇게 반복해서 문제를 풀 수 있으리라 생각했는데 10에서 예외가 발생한다.한번 확인해보자내가 생각한 방식 : 10->5->4->2->1 : 4번 문제가 생각한 방식 : 10
n,k를 입력받고 count라는 변수를 선언 및 초기화 해주고 가치가 들어갈 배열인 values는 n만큼 값들을 0 으로 초기화 시켜준다.그 후 for문을 돌면서 가치들을 입력받고 sort메소드를 활용해서 내림차순으로 정렬 후 큰 값부터 for문을 돌면서 k와 나눠가며
개인의 시간을 배열에 입력받고 정렬한 후에 for문을 활용해서 개인마다 걸리는 시간을 구해주고 그 값을 total 에 넣으면 끝 !!
예를들어 55-50+40 을입력한다면 초기에 -를 기준으로 input을 스플릿 해줘서 받으면 '50','50+40' 이란 리스트가 생성된다.다만 이 리스트 안의 숫자들은 스트링이니깐 나중에 사용하기 위해서는 int형으로 변경해줘야한다. 이렇게 받고 난 후에 곰곰히 생각
우선, city, length, value 를 각각 받는다 ! 그리고 이 문제의 해결전략을 한번 생각해보자 ! 값을 입력 받는다.첫번째 도시에서 다음도시로 가기 위해서는 무.조.건 주유를 해야한다.그 이후부터 최솟값의 주유비로 달려버린당 그러므로 ! minVal 이라는
처음에 단순히... 접근했다가 틀렸다.어떻게 접근했냐면.. 그냥 배열을 입력받고 제일 작은값에 num을 곱하는게 최댓값이라고 생각했다..왜! 백준예시 빵빵하게 안주냥 !! 그러고 뭐가 문제지 생각해보니 예를 들어 100 90 10 이 들어오게 된다면 최대 중량은 순서
처음에는 list를 이용해서 큐 접근을 했는데 시간 초과가 계속 떠서 deque을 불러오는 방법을 배웠다 from collections import deque 는 덱을 불러오는 것인데여기에는 많은 내장 함수가 들어가있다 이 함수들을 활용하니 완전 편한거같다..짱짱맨..
문제 코드 해설 카드 2를 풀고 푸니.. 쉽당 >그냥 Popleft정보를 쫘아아악 출력하고 제일 마지막에 남는 요소를 출력하는 것이라 popleft 정보를 temp에 저장후 print해주면되는데 ! 파이썬에서는 끝을 개행으로 디폴트 가지고 있으니 end=" " 해서 공백으로 바꿔주면된다.
import sysidx를 k-1씩 상승해주고 배열의 길이를 넘었을때 길이랑나눠서 남은 나머지를 저장시키고 다시 반복해주면 되는 문제이닷다만 출력에서 ! join함수를 사용하기 위해서 str로 변형해서 값을 append 시켜야한다.join함수는 파이썬에서 문자열을 다룰
덱에 대한 기본 문제이다.다만 파이썬이 짱짱이라는것이다.. 이 모든게 라이브러리 내장함수로 해결 가능하다니 대박 ㅜㅜ 쨌든 ! 파이썬의 덱 내장함수들을 사용하는 법을 배울 수 있는 좋은 문제이다.여기서 주의해야할점은 바로 입력받을 때 인데 이 입력을 리스트로 입력받음으
기본문제답
펠린드롬과 소수를 모두 고려해줘야 하는 문제이다.알고리즘 분류에 에라토스테네스의 체를 쓰는것도 포함됐으나 생각해보니 굳이 그럴필요가 없을거 같아 소수 판별 함수를 작성했다.그 이유는 ! 처음에 생각한 방식이 에라토스테네스의 체를 활용하여 모든 소수를 구한 후 그 소수
문제 코드 해설 >단순하게 접근했다.. 그래서 그런지 메모리를 킹왕짱 잡아먹는다 ㅎㅎ.. >그냥 세로로 쭈우욱 한번보고 가로로 쭈우욱 한번 보고 그렇게 짰다 .. !
후,,. 그냥 단순히 제곱을 계산하고 나머지 연산을 진행하면 당연빠따로 시간초과가 걸리게된다.이 문제를 위해서 알아야하는 개념은 내가 보기엔 두가지이다!제곱을 구하는 분할정복 개념이다 이와같이 거듭제곱은 반씩 나눠서 계산하는 방법을 가져야 한다.이렇게 한다면 그냥 거듭
크으... 단순히 문제만 보고 덤볐다가 엄청 후두려 맞은 문제이다...그냥\~~ 그냥 ~ 팩토리얼 계산하면 나는 될줄알았지\~~₩그런데 나머지 연산자 법칙도 알아야하고 ~ 페르마의 소정리도 알아야하고~거듭제곱분할정복하는 방법도 알아야하는~ 아주 종합세트적인 문제였다!!
pivo리스트에 피보나치 수열을 붙여가며 구현한것이다.피보나치 수열을 구하는 방법이 많은거같은데..한번 쪼아ㅏ아아악 정리해야겠다
DFS 와 BFS 기본 구현문제이다.인접리스트말구 인접행렬로 그래프를 표현해줬는데 딕셔너리 리스트를 활용한 방법으로 풀 방법을 강구해 보자.
그래프를 생성한 후 몇 개의 그래프가 생겼는지 확인 하는 문제이다.이를 위해서 그래프탐색 알고리즘은 bfs,dfs중 선택할 수 있는데 시간,메모리적측면에서는 dfs가 더 효율적이였다.그리고 여전히.. 행렬을 사용해서 쓸데없이 메모리를 많이 잡아먹는 고쳐아할 부분도 있긴
1번이 감염시키는 컴퓨터 수를 출력하는 것이므로 DFS를 통해 1이후에 연결되있는 컴퓨터부터 cnt+=1을 해주면 된다.
상근이가 가지고 있는 카드를 정렬 한 후 이진탐색알고리즘을 활용하여 내가 선택한 숫자를 상근이가 가지고 있는지 확인하는 문제이다.이진탐색을 재귀로 구현안하니 시간초과라고 떴다.그릭 인덱스 에러도 떠서 수정해주고, 재귀의 깊이를 늘려주고 돌린 결과가 재귀의 깊이를 늘리기
그냥.. 앞선 카드찾기 문제에서 출력형태만 바꿔주면 되는 문제이다.
DFS 또는 BFS를 이용하면 되는 문제이다.DFS로 해결 후 BFS로 작성된 코드를 보았다.이 문제의 접근법은 우선 행렬을 만든 후 하나씩 돌면서 1을 0으로 바꿔 주면 되는 것이다.그렇게 한 무리가 0 이되면 다음 무리도 DFS를 통해서 0으로 만들어주면된다.이렇게
앞선 배추 문제에서 약간의 변형만 있는 문제이다.행렬을 만들어준 후 사각형은 1로 저장한다.그 후 0이 저장된 곳을 dfs탐색을 통해 탐색하는데, 매 사각형 넘어갈때마다 1씩 넓이를 올려주면되는데 제일 첫 사각형은 안올라가므로 wide=0이 아닌 1로 초기화시켜준다.
앞선 문제들과 전체적인 틀은 같지만 다른 문제이다.그 이유는 행렬내에서 RGB모두를 구분해줘야한다는 점이다.. 그리고 적록색약인 친구를위해 RG, B를 구분해줘야하는 것이다.그래서 수많은 도전끝에 모두,,각자 구하는 함수를 하나씩 짜서 제출했지만 메모리초과가 나왔다.그
오늘 문제를 풀면서 대박대박적인것을 알아냈다.바로 은 리스트에서 입력받을때 개행을 포함한다는것이다..!!대박이지 않은가?!그래서 list(map(int, input().rstrip())) 이 코드를 실행시킬때 이와 같은 오류가 계속 떴었다.이를 없애주는 방법은 바로 s
이전까지는 DFS로 풀었는데 이번 같은 경우 너비우선탐색이 아닌 깊이 우선 탐색으로 한다면 무한히 들어가서 끝이 나지 않을것이다.왜냐하면 수빈이가 동생 자리에 오는 경우 멈추게 했는데 잘못된 길로 쭈우욱 들어가면 절대로 수빈이가 동생자리로 올 수 없기 때문이다.그렇기에
문제 코드 해설 > 이 문제 역시 BFS로 진행 해준다. 그 이유는 순차적으로 양옆으로 토마토를 익혀가게 해야하기 때문이다. 그리고 상하좌우를 보기 위해서 방향벡터를 다시 가져와서 사용해주었다. 그 후 값을 입력받고 BFS를 위해 덱으로 만들어둔 큐에 그 요소의 인덱스값을 삽입한다. BFS > 큐를 하나씩 빼주면서 그 큐의 상하좌우에 익지 않은 토마토...
이전문제들과 비슷하지만 섬의 갯수를 셀때 편의성을 위해 BFS가 아닌 DFS로 구현했으며가로 방향의 벡터들까지 만들어주기 위해서 dx,dy에 방향벡터를 추가해주어 가로까지 탐색할 수 있게 만들었다.그러고 1을 0으로 바꿔 섬을 전부 없애주는 방식으로 탐색을진행했다.
앞서 푼 토마토 문제와 비슷하다.그저 시작과 끝을 문제에서 알려줬을 뿐이다.큐를 만들어서 그 큐에 지나간 칸수를 더하면되는데 시작칸도 포함되므로 토마토와 다르게 1을 안빼주어도 된다.
문제 코드 해설
이때까지의 문제와 약간 비슷한 맛이 있지만 이 문제에서는 하나를 더 생각해줘야한다.그래서 골드인가? 무엇이냐면 이전에는 탐색했던 곳의 자리를 변경시켜주어서 다시 탐색하지 않게해서 너비우선탐색을 진행했었는데 이번 문제같은 경우는 탐색했던 곳의 자리를 변경해주면 안된다.그
백트래킹을 활용한 방법이라고 생각하면 된다.dfs를 통해서 제일 깊은 곳까지 가는것을 if cnt == 7 이라는 것을 통해서 확인하여 만약 이것이 내가 구하는 값이라면 출력하고 아니라면 리턴하여 탈출하는 과정이다.이렇게 쭉쭉 처음부터 끝까지 조합을 하는 과정이라고 보
그냥 구현할려다가 순열에서 머리터져서 그냥.... 라이브러리의 도움을 구해서 순열함수를 사용했다.순열함수는 매번 보기만했지 직접사용한건 처음인데.. 되게 신세계였다.이렇게만 하면 arr를 순열로 모든케이스 튜플을 만드는 것이였다..!대박... 이제 그냥 사용해야지 헷.
내가 만든 코드는 메모리 차지를 어마어마하게 엄청 비효율적인 방법이라서 다른 사람들의 코드를 둘러봤다..역시..나 백트렉킹이였다.. 백트랙킹 이제는 익혀야하고 익숙해져야한다.. 이만큼 나왔는데 안익숙해지면 사람도 아니지 젠쟝,,,쨌든 백트랙킹의 주요 포인트는 재귀라는점
내림차순으로 정렬전에 입력받은 점수를 arr에 넣어주고 내림차순으로 정렬해줬다.그러고 인덱스값을 .index를 사용해서 찾아오는데 공동등수라고해도 앞에 요소를 먼저 출력하기에 괜찮다.그리고 예외 처리를 진행해주었다.
집합을 이용하면 간단하게 풀수있는 문제이다.리스트를 입력받고 집합으로 변환후 교집합을 얻어서 리스트로 변환해주고 출력을 하면 된다.
문제 코드 해설 파이썬에서는 스택형 자료구조는 리스트로 만들면된다! 그냥 리스트로 팝해주고 푸쉬해주고 뭐..그런식.... 아주 잘되있다. 명령과 숫자를 받는 방식을 choice라는 문자열에 0,1번째에 저장하는 방식을 활용하면 이 문제를 해결할 수 있다.
처음에는 리스트로 접근해서 그냥 빼주고 어쩌고,, 해서 시간초과가 떴다그래서 생각의 방식을 바꿔서 접근했다. 커서를 기존에는 정의하여서 그 인덱스값에 접근하였지만 스택 2개를 사용함으로서 커서를 별도로 지정해주지 않아도 되게 된다.그 이유는 왼쪽 스택은 커서의 왼쪽 오
최솟값을 구하기 위해서 arr1의 제일 작은 값과 arr2의 제일 큰 값을 곱해가며 없애주는 방식으로 진행했다.
괄호를 cnt를 더하고 뺌으로서 구분해주는 문제이다.
문제....이해하기가....어려웠따리...하지만 문제를 자세히보면 내가 입력하는것은 "수열"이고 "스택"에는 1부터 N까지의 숫자를 넣는것인데 넣는 과정에 내가 입력한 수열을 만들 수 있게 스택에 있는 숫자를 빼는 것이다.그래서 처음에 4를 입력했으니 그 이전까진 푸쉬
움,,, 간단한 문제이다근양! arr로 사람들을 초기화 해주고 idx 변수를 생성해준 후 이 인덱스를 이용해서 사람들을 제거 해 나가는데 배열의 길이보다 길어지는 케이스가 발생하는 경우 나머지연산을 사용해서 Idx를 초기화시켜주면된다.그리고 출력할때는 join친구와
문제 코드 해설 >중요도를 arr리스트를 통해서 받은 후 mPlace 리스트에서 내가 찾고 싶은 순서가 출력되는 값을 1로 하고 나머지는 0으로 초기화 시켜준다. 그 후 반복문을 돌면서 배열의 첫번째 요소가 최댓값인지 확인하고 만약 맞다면 카운트를 올려주는데 거기에 이것이 찾는 값이라면 출력후 반복문을 탈출하게 해준다. >그런데, 찾는 값이 아니라면...
문제 코드 풀이 > 순열을 사용하는 문제이다. 순열..조합..아 조합이겠다 콤비네이션이니깐 하-핫 순열이랑 조합 파이썬에서 라이브러리로 사용하는법에 익숙해져야겠다 우선, lotto를 입력받는데 int형으로 받으면 원하는 출력형태를 join으로 사용하지 못하므로 st
문제 코드 풀이 > 순열을 사용하는 문제이다. 순열..조합..아 조합이겠다 콤비네이션이니깐 하-핫 순열이랑 조합 파이썬에서 라이브러리로 사용하는법에 익숙해져야겠다 우선, lotto를 입력받는데 int형으로 받으면 원하는 출력형태를 join으로 사용하지 못하므로 st
문제 코드 풀이 > 순열을 사용하는 문제이다. 순열..조합..아 조합이겠다 콤비네이션이니깐 하-핫 순열이랑 조합 파이썬에서 라이브러리로 사용하는법에 익숙해져야겠다 우선, lotto를 입력받는데 int형으로 받으면 원하는 출력형태를 join으로 사용하지 못하므로 st
문제 코드 풀이 > 순열을 사용하는 문제이다. 순열..조합..아 조합이겠다 콤비네이션이니깐 하-핫 순열이랑 조합 파이썬에서 라이브러리로 사용하는법에 익숙해져야겠다 우선, lotto를 입력받는데 int형으로 받으면 원하는 출력형태를 join으로 사용하지 못하므로 st
문제 코드 풀이 > 순열을 사용하는 문제이다. 순열..조합..아 조합이겠다 콤비네이션이니깐 하-핫 순열이랑 조합 파이썬에서 라이브러리로 사용하는법에 익숙해져야겠다 우선, lotto를 입력받는데 int형으로 받으면 원하는 출력형태를 join으로 사용하지 못하므로 st
전형적인 DP문제이다.이 문제와 비슷한 유형을 피보나치수열을 구할때와 유사하다 우선, 문제의 케이스별 규칙을 구하면f(n)=f(n-1)+f(n-2)+f(n-3)을 가지고 n이 1,2,3 일때는 고정된 수 이므로 case라는 리스트에 미리 넣어두고 case리스트에 값들을
처음에 문제를 잘못이해해서 그냥 배열요소의 곱을 구하라는거구나 했다가 틀려서 다시 보니깐 n==1인 경우와 아닌 경우를 구분해줘야할것같았다!그래서 n==1인 경우 real이라는 리스트의 0번째 요소를 제곱하고 아닌 경우 real리스트의 최솟값과 최댓값의 곱을 통해 원하
참 오랜시간 고민한 문제이다 그리디알고리즘 문제로 회의시간을 입력받아서 최대로 회의를 많이 진행할수있는 수를 찾는것인데리스트를 입력받는것까진 생각했지만 0,1번째 각각의 요소를 정렬하는 것을 생각하지 못했다.거기에 그리디로 마지막으로 끝난 회의시간을 매번 초기화 해주면
문제 코드 해설 뭔가 겉만 번지르한 문제이다.
어우.. 빡쌔다..아무리 생각해도 생각이 안나서14889 해설을 참고했다...조합을 사용하는 문제이다. 우선, n을 입력받고 matrix를 생성 해주는데 이는 팀원 이름이라고 생각하면 된다. matrix로 부터 cases를 생성해 조합을 만들어준다.그 후 matrix를
n,l을 입력받고 places를 입력받고 정렬해준다.그 이유는 위치를 오름 차순으로 봐야지 하나씩 넘어가며 체크가 가능하다그 후 start,end 변수를 초기화하는데 start는 제일 앞부분 그리고 end는 start에서 테이프길이 만큼 더한 곳이다.위치로부터 좌우 0
행렬 입력받을때 이런 방식으로 한줄로 입력이 가능하다.. def check(): for i in range(n): for j in range(m): if matrixAi!=matrixBi: return F
전형적인 DFS BFS문제인데 다른 점이 있다면 완전 전형적이라는 것이다.다른 문제 같은경우 행렬의 방식으로 접근을 하지만이 문제는 그래프로 노드끼리 간선을 연결해주는것을 입력받아서 해주는 방식인것이다.그리고 노드끼리 얼마나 멀리 떨어져있는지 정도가 촌수라고 보면 된다
string으로 받고 문자열로 잘라주고 int로 변수에 더해주면서 비교하는 문제이다..파이썬의 세계란...
시간은 같게 뜬다. codes리스트에 기타 시리얼 번호를 입력받고 정렬을 진행해주는데 sort 함수의 key를 lambda형식으로 받아서 진행한다 람다로 전달해주면 위의 순서대로 정렬을 진행한다.그렇기에 길이순으로 정렬을 진행하고 total 즉, 합순으로 정렬하고 마지
앞서 푼 문제와 같이 sort, lambda를 응용하는 문제인데, 같은 것은 출력하지 않는다고 하니 리스트를 받고 set으로 중복을 제거해주고 다시 list로 변환해주는 스킬을 사용해주면 된다.
딕셔너리를 활용하는 문제이다.key로 입력된 수를 잡고 value를 빈도,위치를 넣는 방법이다. 그렇게 sorted를 써서 원하는대로 정렬을 진행 한 후 result에 정렬된 key를 빈도 만큼 곱해주면서 수열을 만들어주고 join으로 출력을 진행해주면 된다.
이진탐색을 어떻게 사용해야할지 감이 안잡혀 풀지 못한 문제였다그런데.. bisect_left,right를 배우고 이진 탐색으로 수의 범위 사이에 있는수의 갯수를 찾거나 같은 수의 갯수를 찾을 수 있는 것을 알아내서 적용해보니 풀렸다뿌듯뿌듯-!바이색섹를 이용한 이진 탐
파이썬의 실수처리에 대해 알아갈 수 있는 문제였다을 했을때의 실수처리를 서로 다르방식으로 되어 결과가 다르게 출력된다그렇기에 avg2같은경우는 오차가 발생해 틀리게된다...문제는 이진탐색으로 총 몇번의 게임을 해야할지 찾아가도록 알고리즘을 짜면된다.
improt mathsqrt를 쓰면 오버플로우 에러가 뜬다.. 왜그럴까..?이진 탐색으로 제곱근을 찾아가는 문제이다
어우,, 쓸데 없이 헤멘 문제이다..문제를 잘읽자,,,n보다 많이 자를 수 있는 케이스도 포함이였는데ㅔ,,그거에서 계속 걸렸었다..그래서 reuslt라는곳에 이분탐색을 진행하며 Mid를 붙여줘나가서 제일 최대값을 출력하게 했다.
total에 예산을 조건에 따라 더해나가며 이분탐색을 진행하는 알고리즘이다.
블루레이의 크기를 이분탐색을 진행하는 문제이다.블루레이의 최소크기를 영상 하나의 최대길이로 잡고블루레이의 최대크기를 영상 총합으로 잡아서 start,end를 만들어주면된다.그 후 이진 탐색을 진행하면서 총 개수가 원하는 개수보다 작으면 블루레이 크기를 줄여줘야하기 때면
path라는 곳에 city 인덱스 칸에 연결되어 있는 도시들을 붙여주면 된다.그러고 BFS를 진행하면 된다.
백트랙킹 방식이다.그래프를 입력받고 벽을 전부다 만들어보는 케이스를 가진다벽이 3개 만들어지면 그 케이스의 그래프를 copy method를 활용하여 깊은 복사를 진행하고 그 그래프에서 바이러스를 전파시켜본다전파가 끝나면 0의 갯수를 세서 최댓값을 ans에 저장한다
바이러스를 미리 저장해두는 리스트를 만들어두고 그래프를 받는 리스트도 만들어준다.바이러스는 순위가 있으니 정렬을 진행해주고 bfs를 돈다bfs를 돌며 시간이 다됐을때 브레이크를 해준다그리고 큐에 들어온 순서대로 전염을 진행한다