1. VSCode 설치 Visual Studio Code - Code Editing. Redefined Visual Studio Code is a code editor redefined and optimized for building and debugging modern web and cloud applications. Visual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows. code.visualstudio.com vscode를 설치합니다. 2. c++ 환경세팅 터미널에 다음과 같이 입력하면 컴파일러 설치여부를 확인 후 미설치시 자동으로 설치된다. 디버거인 lldb또한 마찬가지로 입력해준다...
문제 1차원 그래프에 바구니가 놓여있고 해당 바구니에 사탕이 놓여있다. 이 때 한 지점을 잡아 주어진 범위에 사탕이 가장 많은 경우를 구한다. 풀이 N = 100000, K = 2000000 이기 때문에 이중 이상의 루프를 돌면 시간이 초과된다. 따라서 투포인터를 이용하여 해결하였다. N, K = map(int, input().split()) maxSize = 1000001 arr = [0] * maxSize basket = set() for i in range(N): a, b = map(int, input().split()) arr[b] += a basket.add(b) 배열의 최대 크기를 정의하고 해당 크기만큼의 배열을 만든다. 그 후 좌표와 사탕의 개수를 입력받아 배열에 더해준다. 이렇게 하는 이유..
문제 풀이 투포인터 기초가 부족하여 풀게 된 문제이다. 특정 구간을 잡았을 때 합이 s보다 커야하고 그 구간들 중 가장 짧은 구간을 구하는 문제이다. 완전탐색으로 해결하면 n^2의 시간복잡도가 나오지만 투포인터는 n이기때문에 해결할 수 있다. n, s = map(int, input().split()) arr = [0] + list(map(int, input().split())) res = 4e9 sumVal = 0 j = 0 먼저 필요한 정보들을 입력받는다. 편의상 배열의 0번째는 0으로 채워넣었다. for i in range(1, n + 1) : while j + 1
문제 풀이 그리디로 해결해야 하는 문제이다. 완전탐색으로 해결하려 하면 시간초과가 나오기 때문이다. 따라서 가장 최선의 경우의 수를 뽑아야한다. 가장 좋은 방법은 파는 시점을 기준으로 하는것이다. 배열을 한번 순회하며 최소값을 갱신하며 파는 시점을 기준으로 최소값을 빼주면 O(n)의 시간으로 해결할 수 있다. for i in range(n): profit = cost[i] - minCost if profit > maxProfit: maxProfit = profit if minCost > cost[i]: minCost = cost[i] 위의 코드로 해결할 수 있다. 현재 가격과 최소값을 빼준 후 최대값보다 계산값이 크면 최대값을 갱신해준다. 또한 현재값이 최소값보다 작을경우 최소값을 갱신해준다. 코드 ..
문제 풀이 일반적인 틱택토이지만 2개의 숫자가 한팀이 되었을 때만 이긴걸로 간주한다. 즉 1 1 1 과 같이 한 숫자로만 이루어진 줄은 이긴걸로 간주되지 않는다. 틱택토는 항상 3X3의 배열이므로 이를 이용하여 문제를 해결하였다. team = set() for i in range(3): tmp = set() for j in range(3): tmp.add(graph[i][j]) if len(tmp) == 2: team.add(tuple(sorted(graph[i]))) 배열의 가로를 검사하는 코드이다. 3X3배열에서 두 숫자가 팀이되어서 이길 경우는 한 줄에 2개의 숫자만 있으면 된다. 따라서 set자료형을 이용하여 중복을 제거했을 때 길이가 2개일 경우 tuple로 정렬된 줄을 team에 넣는다 fo..
문제 풀이 그래프를 탐색하는 문제이므로 BFS를 사용하였다. n, k, u, d = map(int, input().split()) graph = [list(map(int, input().split())) for _ in range(n)] visited = [[False] * n for _ in range(n)] sumList = [] 먼저 필요한 정보들을 입력받고 필요한 변수들을 선언하였다. 방문 여부를 체크해야하므로 visited배열을 사용하였다. def BFS(i, j): q = deque() q.append((i, j)) _sum = 1 visited[i][j] = True while q: r, c = q.popleft() now = graph[r][c] for i in range(4): nr, n..