해당 문제 링크Git - 코드조합 문제로 itertools 라이브러리의 combinations 함수를 사용했다.난쟁이 9명 중 7명을 뽑는 경우의 수를 모두 구해서 해당 요소들을 더하여 100이 나왔을 때 하나씩 출력하였다.combinations 함수의 반환 값으로는
해당 문제 링크Git - 코드처음 문제를 풀면서 난관에 봉착했다.. 처음 썼던 코드는 아래와 같다.하지만 이 코드는 입력을 3으로 할 때만 나온다는 것이다... 왜냐하면 print(resi, resi+1, resi+2)로 아예 지정을 했기 때문.. 사실 코드를 작성하면
해당 문제 링크Git - 코드DP를 공부하고 처음 관련 문제를 풀어보고자 했던 문제인데 작은 값들이 반복적으로 쓰인다는 느낌은 왔지만 코드로는 잘 안짜져서 답답했다..다른 사람들의 코드를 참고한 뒤 코드 이해 후 나도 쉽게 짜지는 그날까지..열심히 하고자 한다.이 문제
해당 문제 링크Git - 코드값을 받아서 리스트에 넣고 리스트끼리 합해서 결과를 나오게 접근하고자 했다. 하지만, 입력을 입력한 값에 따라 연속으로 받는 형식으로 들어가는 방법을 몰라 검색하여 참고하였다.map을 활용하여 숫자 쪼개서 입력 받기split과 map 함수를
해당 문제 링크Git - 코드이전 2차원 배열 문제의 연장선으로 보면 된다. 2차원 배열을 이용할 때 유심히 봐야할 부분은 for문이다. 2차원 배열 식으로 들어간다!row가 입력한 1행의 모든 열의 값이고 해당 행의 값이 l.append()함으로써 1행이 완성 되는
해당 문제 링크Git - 코드100\*100 도화지를 초기화 한 뒤, 색종이 한 장을 도화지 위에 올려놓으면 1을 더해주도록 했다. 이후 겹치는 부분은 2인 값 이상을 갖고 있을 것이다. 겹치는 값들을 모든 색종이의 넓이에서 빼주면 된다.처음에는 색종이 수를 받는 것을
해당 문제 링크Git - 코드문제 해석도 안되고, 어떻게 풀어야 할지 감이 안와 참고하여 문제를 풀어보았다.n==1일 때는 '\*'만 출력되고 우리는 이 '\*'을 사용하여 모든 틀을 만든다.n==3일 때는 '\*\*\*','\* \*','\*\*\*'으로 만들어진다
해당 문제 링크input() 이 sys.stdin.readline() 보다 느린 이유 :input() 내장 함수는 sys.stdin.readline()과 비교해서 prompt message를 출력하고,개행 문자를 삭제한 값을 리턴하기 때문에 느리다.input() 과 s
해당 문제 링크메모리 초과, 시간 초과 문제가 생겼다.. 어떻게 해야 하는지 방법을 검색하고 코드도 참고하여 해결했다.수 정렬하기 2 문제를 가져와 돌렸을 때는 메모리 초과가 됐다.for문 속에서 append를 사용하게 되면 메모리 재할당이 이루어져서 메모리를 효율적으
해당 문제 링크n이 짝수일 때는 제일 먼저 1번판(a)에서 2번판(b)로 이동n이 홀수일 때는 제일 먼저 1번판(a)에서 3번판(c)로 이동코드 및 해석 참고 사이트 -11단계 에서는 start 막대에서 6-start-end 막대로 옮겼는데위 그림을 참고해보면 1단계에
해당 문제 링크참고 코드
해당 문제 링크dfs를 이용하면서 아래와 같이 그래프를 만들어 답을 도출했다..어떻게 이렇게 푸는 방법들을 아는 건지..간단하고 간결한 코드라고 생각한다.이전 문제 DFS와 BFS 코드를 이용하여 풀었다. 이전 문제 코드를 잘 분석해서 풀어서 이번에는 어떻게 작성하면
해당 문제 링크앞 서 푼 문제\[게임 맵 최단거리]와 비슷해서 이를 이용해서 문제를 해결했다.mapsi==1일때 즉 집이 있는 곳에서부터 시작하고자 했을 때 BFS로 단지 수를 센다.BFS 기본 동작 원리대로 진행한다.구체적인 동작은 주석으로 처리하였다.코드를 작성하면
해당 문제 링크백트래킹 문제라서 DFS로 문제를 풀 수 있다. DFS를 공부해서 어렵지 않게 이해하고 풀 수 있었다.맨 처음에는 visited=0\*n으로 방문을 확인하려고 하는데 다른 사람의 코드를 보니 아예 리스트에 방문했던 값을 넣고, 해당 값을 출력하는 방법이
해당 문제 링크시간 복잡도 O(log n): 대표적인 '분할 정복' 알고리즘: 하나의 큰 문제를 두 개의 작은 문제로 분할하는 식으로 빠르게 정렬한다.: 특정한 값을 기준으로 큰 숫자와 작은 숫자를 서로 교환한 뒤에 배열을 반으로 나눈다.: 평균 속도 = 시간복잡도 O
해당 문제 링크
해당 문제 링크업로드중..업로드중..중위 순회 : 7 3 8 1 9 4 10 0 11 5 2 6후위 순회 : 7 8 3 9 10 4 1 11 5 6 2 0후위 순회의 맨 마지막 원소 = 최상위 루트이를 기준으로 중위 순회를 나누면, 왼쪽은 왼쪽 서브 트리, 오른쪽은 오
해당 문제 링크아직 공부가 부족해서 위상 정렬이나, SCC에 관해 이해가 쉽지 않다. 3개의 풀이 모두 같은 방식을 말하고 있지만, 이해를 더 쉽게 받아들이기 위해 여러 설명들을 참고하여 작성했다.SCC와 약간의 위상 정렬 방법(indegree\[] 배열)을 이용해서
해당 문제 링크시간 초과가 많이 난 문제였다.시간 초과가 나지 않도록 코드를 작성할 때 주의할 부분이 있다!!파이썬의 기본 재귀 깊이 제한은 1000으로 매우 얕은 편이다.따라서 재귀로 문제를 풀 경우 드물지 않게 이 제한에 걸리게 된다. 이 함정에 걸린 사람은 원인
해당 문제 링크런타임 에러 및 시간 초과가 많이 난 문제였다.이전 문제에서 시간을 줄일 수 있는 방법은 다 적었지만 해결이 안되었다.아래 코드 부분이 문제였다.각 집합에 포함되어있는 가중치들을 리스트에 넣고 가장 큰 가중치를 제외하고 합쳐서 연산하면 되는 계산인데시간
해당 문제 링크참고한 다른 사람 코드에서 내가 수정해서 작성해보았다.참고한 코드는 유니온 파인드의 값을 넣을 때 1부터가 아닌 0부터 넣고 경로 체크를 할때는 -1를 넣어서 parents 배열 자체가 -1, 0, 0, 0으로 만들어지게 한다. 즉 예시에 맞게 보자면,
해당 문제 링크dpi 는 i번째 계단까지 밟았다고 가정했을 때 가장 큰 경우의 값을 저장하는 배열이다.마지막 도착 계단(end)은 반드시 밟아야 하기 때문에 마지막 계단을 밟는 다는 조건 하에 2가지의 경우가 존재한다.1\. 밟은 계단이 end-1일 경우, end-2
해당 문제 링크정답이긴 하지만 시간을 너무 많이 소비했다.. 완전 탐색 문제라 시간이 널널하게 주었지만 그럼에도 너무 많이 낭비되었다. 완전탐색이어도 더 보기 쉽고 짜임새 있게 구현하는 것이 중요하다는 것을 다시 깨달았다!내가 풀고자 접근했던 방식과 비슷하다.이렇게 작
해당 문제 링크정답으로 해당되는 체스판을 미리 만들어놓고 비교하고자 했다.흰색으로 시작하는 체스판, 검은색으로 시작하는 체스판 이렇게 2개를 만들어놓았다.다 만들어놓고 이제 됐다 싶었는데 잘못된 답이 나왔다.다시 문제를 보니 큰 보드 중 8\*8 체스판으로 잘라낸 후에
해당 문제 링크처음 풀이는 단순하게 for문으로 돌렸는데 런타임 에러가 났다. 알고리즘 분류의 이진 탐색이 있길래 이진 탐색으로 작성했다.(for문으로 돌리기 전에 미리 이진 탐색으로 돌릴걸이라는 아쉬움이 있었다.)하지만 그럼에도 계속 런타임 에러가 나서 코드 참고하며
해당 문제 링크단순 for문으로 돌려서 풀었지만, 시간 초과 문제가 나타났고, 집합이나 해시맵을 이용해야겠다고 생각이 들어 해시맵을 사용했다. 아직 해시 문법에 어색해서 문법을 참고하며 문제를 풀었다.오류가 계속 나자 다른 사람들의 코드를 참고해서 해결하였다.아래의 문
해당 문제 링크입력 변수를 받고, 인접 영행렬을 생성하였다.DFS와 BFS 게시물에서 작성한 것과 비슷하게 작성하여 구현을 했다.
해당 문제 링크힙(Heap) 문법을 작성해 놓은 해당 사이트를 참고하면 이해하기 쉽다
해당 문제 링크처음에는 아래와 같이 코드를 작성했다. 이 코드의 문제는 일단 조합에 맞춰서 1이라는 벽을 3개 만들어 준 뒤 바이러스의 위치를 찾아서 bfs()를 진행하는 것이 내가 작성하고자 하는 것이었지만, 이렇게 되면, 바이러스가 bfs로 인해 퍼져가면서 2인
처음 코드를 짰을 때는 아래와 같이 커서에 해당하는 부분을 변수로 넣고 짰다.하지만 시간 초과가 됐다..알아보니 insert연산에서 O(n)의 시간복잡도를 가지게 되어 시간초과가 발생한다고 한다..커서 기준 왼쪽 스택과 오른쪽 스택을 구분해서 풀면 풀린다는 힌트를 얻고