알고리즘

문제 접근문제는 중앙부터 시작해서 나선형으로 배열을 순회하면서 작성하는 것저는 왼쪽 위(0, 0) 지점에서 시작하는게 편해서 숫자를 거꾸로 돌렸습니다.이런 숫자 배열을 만들어야한다고 하면빨간 지점 즉, (-1, 0) 에서 시작한다고 가정합니다.아래 방향으로 3번오른쪽 방향으로 2번윗 방향으로 2번왼쪽 방향으로 1번다시 아래방향으로 1번이러한 과정을 거쳐서 좌표가 이동하게 됩니다.여기서 패턴을 찾아보면 첫 1회를 제외하고 같은 이동 횟수는 2번씩 나타납니다.한번 이동할땐 좌표는 y 혹은 x가 1씩 증가 감소 하게 됩니다.// 초기 좌표를 (-1, 0) 이라고 가정하면 (col, row)for(int i = 0; i이러한 반복문을 사용하게 됩니다.이제 고려해야 할것은이동 횟수 | 좌표에 더해지는 수 | fo..
Github 코드 이슈 남기기코드 리뷰를 위해 코드에 이슈를 달아봅시다.먼저 리뷰할 팀원의 레포지토리로 들어갑니다.해당 주차의 폴더로 들어가서 스윽 코드를 읽고,뭔가 다르게 푼거같은데 모르겠다 혹은 애매하다 하는 단락이 있다면해당 단락의 줄번호를 클릭하여 메뉴를 열어줍니다.Reference in new issue를 클릭해 줍니다.title 부분에 하고 싶은 말을 적어줍니다.이후 Submit new issue를 눌러 issue를 달아줍니다.부가적으로 할 말이 있다면 코멘트로 남겨주면 됩니다.   Github 코드 이슈 확인하기이후 해당 팀원이 레포지토리로 들어오면왼쪽 위 issue 탭에 1이라는 숫자가 나타나게 됩니다.클릭해 줍니다.자신의 코드에 달린 모든 issue가 목록으로 보입니다.클릭합니다.해당 이..
백준허브는 알고리즘 문제를 제출하면 자동으로 깃 레포지토리로 커밋되는 익스텐션입니다.백준허브 설치, 설정크롬 확장프로그램 스토어로 가서 백준허브를 검색하고 추가해 줍니다.추가했다면 오른쪽 위의 퍼즐모양을 눌러주고백준 허브를 클릭하시면Github와 연동하는 창이 나옵니다.Authenricate 눌러주면 (해당 PC로 깃허브 자동로그인을 해뒀으면 바로 화면이 나오지만 아니라면 로그인해야 합니다.새 탭으로 창이 뜹니다.Github의 개인 Repo에 알고리즘 문제 저장 Repo가 따로 있다면Link an Existing Repository를 선택하고 해당 Repo의 이름을 입력하면 되지만없다면 Create a new Private Repository를 선택하고 생성할 Repo 이름을 입력하면 됩니다.자신의 Gi..
Repository 생성하기Git 다운로드New repository를 눌러서 개인 Repo를 생성해 줍니다.Repository : 자신의 Repo 이름을 적습니다.Description : 해당 Repo의 설명을 적습니다. 비워두셔도 무관합니다.공개 범위를 Public으로 설정해 줍니다.[Create repository]를 눌러 생성해 줍니다. Local 환경으로 Clone 하기빨간 동그라미로 표시해 둔 복사버튼을 눌러둡니다.이후 바탕화면에서 새로운 폴더를 만들고 폴더로 들어가 명령 프롬프트를 켜줍니다.주소창에 cmd라고 입력하고 엔터 누르시면 명령 프롬프트창이 나옵니다.해당 창에서 clone 명령어를 입력합니다. 아래와 같은 형식으로 입력하고 엔터를 누르시면 됩니다.git clone {복사한 주소}오류가..
문제두 정수 a와b가 주어집니다.실수 a/b의 값을 소수점 21번째 자리에서 내림하여 출력하는 프로그램을 작성하시오.1차(실패)import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); double a, b; a=sc.nextDouble(); b=sc.nextDouble(); double ans = a/b; // System.out.println(ans); System.out.printf("%.20f", ans); }}이유java에서 float형은 ..
모든 트럭이 조건을 맞추면서 다리를 지나게 한다음 시간을 출력하면 되는 문제다.보고 이전에 풀었던 백준문제와 똑같다는 생각으로 바로 큐로 접근했다.다리를 나타내는 큐를 생성하고 시간마다 뒤에서 넣고 앞에서 빼면서 트럭이 모두 없어질때까지 반복했다.트럭 리스트가 비게되면 반복문을 끝내고 시간 + 큐의 길이 해줬다.from collections import dequedef solution(bridge_length, weight, truck_weights): # bridge_length 최대 다리위 트럭 수, weight 하중, truck_weights 트럭별 무게 answer = 0 truck_weights = deque(truck_weights) queue = deque([0]*bri..
이 문제는 음.. 전형적 탐색 문제dfs로 접근했다.컴퓨터(노드)의 갯수와 관계 그래프가 주어지기 때문에 하나의 노드를 시작으로 쭉 이어진 마지막 노드까지 가면서방문처리(visit)를 해주면된다. 물론 다음 노드를 볼때는 방문처리(visit)가 되지 않은 상태의 노드를 선택해야한다.그리고 한번의 dfs가 끝나면 네트워크의 갯수(answer)에 1을 더해주면된다.def solution(n, computers): answer = 0 visit = [False] * n def dfs(node): visit[node] = True for i in range(n): if node != i and computers[node][i] and not v..
이건...N개의 행, 4개의 열이 있다.첫번째 행에서 만약 2번 열을 골랐다면, 다음행에서는 2번열을 고르지 못한다.이런 조건에서 N행까지 도착했을때 수의 합이 최대가 되게 하는 문제이다.처음에는 dfs로 접근을 했지만... 코드가 굉장히 복잡하고 연산 문제 때문에DP로 접근했다.선택한 열을 제외한 모든 요소를 더해서 가장 큰값을 골라 초기회 해주고 누적하는 식으로 진행했다.def solution(land): answer = 0 n = len(land) dp = land for i in range(1, n): for j in range(4): dp[i][j] += max(dp[i-1][:j] + dp[i-1][j+1:]) answer = max(..
고민하는만두
'알고리즘' 카테고리의 글 목록