본문 바로가기

분류 전체보기

(129)
[알고리즘] 3-Way inPlaceQuickSort - 네덜란드 국기 알고리즘 서론 quick sort quick sort는 기준 원소 pivot을 설정 후 기준 원소보다 작은 / 기준 원소와 같은 / 기준 원소보다 큰 리스트 3개로 분할하여 정렬한다. 따라서 입력 리스트의 모든 원소는 세 개의 부 리스트 중 하나에 삽입된다. inPlaceQuickSort quick sort는 제자리에서 수행되도록 구현이 가능하다. 입력 리스트의 원소를 재배치할 때 값을 삽입하는 대신 대체 작업을 수행한다. 대체란 입력 리스트 내에서 재배치되어야 할 원소들의 자리를 맞바꾸는 것이다. ※ 지금부터 설명하는 부분은 inPlaceQuickSort를 구현할 때 배열로 구현한다고 가정한다. 연결리스트에서는 쉽게 해결이 가능한 문제이기에 고민할 필요가 없었다. ※ quicksort를 진행할 때 분할 과정에 ..
[Back-end/Spring] 스터디 2주차 정리 진도 : 자바(섹션 2-객체) + 스프링 입문(섹션 3) 자바 프로그래밍 입문 강좌 - https://www.inflearn.com/course/실전-자바_java-renew 스프링 입문 - https://www.inflearn.com/course/스프링-입문-스프링부트 Q. MVC 패턴과 컨트롤러 / 서비스 / 리포지토리 / 도메인의 차이? MVC 패턴은 개발 방법론 (디자인 패턴의 한 종류) 컨트롤러 / 서비스 / 리포지토리 / 도메인은 웹 애플리케이션 계층 구조 전자는 이렇게 하면 더 효율적일 것이다 ~ 이고 후자는 이렇게 구성이 되어야만 한다. Q. MVC 패턴에서 View는 프론트엔드와 무엇이 다른가? 백엔드에서도 각 데이터를 다루고 이를 결국 HTML/CSS/JS와 같은 언어로 사용자가 볼 수..
[알고리즘/백준] 11725번 - 트리의 부모 찾기 11725번 트리의 부모 찾기 - https://www.acmicpc.net/problem/11725 카테고리 : Tree / BFS(그래프 탐색) 접근 방법 노드 정보를 받을 때 트리 상에서 연결된 두 정점에 대해서 받게 된다. 따라서 정보를 받을 때 누가 부모인지 알 수 없어서 먼저 Tree를 2차원 리스트에 담아주었다. 노드 번호를 인덱스로 사용하기 위해 0번째 인덱스는 사용하지 않았다. 그리고 그래프처럼 각 정점에 대해 연결된 서로의 정점 정보를 모두 담아주었다. node = [[] for _ in range(N + 1)] for _ in range(N - 1): n1, n2 = map(int, input().split()) node[n1].append(n2) node[n2].append(n1) ..
[42 서울] 본과정 7기 OT와 한 달 적응기 본과정에 합격한 지 어느덧 2달이 지나가고 있는데 이제야 쓰는.. 한 달 적응기! 22.07.04 7기 본과정이 시작하는 대망의 첫날 코알리숑 배정이 새벽 12시 땡 하면 바로 될 줄 알고 기다렸다가 밤에 들어가 봤으나 이전처럼 접근이 되지 않았다. 알고 보니 오전 10시에 코알리숑에 배정되었다고 메일이 날아오면서 인트라에 접근을 할 수 있었다. 사실 내일이 오리엔테이션이라 첫날에 클러스터 가는 카뎃분들이 많이 없다고 슬랙에 올라왔었지만 개포 클러스터에 가보고 싶어서 같이 합격한 카뎃 친구와 같이 갔다. 들어가서 클러스터 구경도 하고 여기저기 붙어있는 포스터도 구경하고 1층에서 게임도 하고 (첫 과제인 Libft 등록만 하고) 나름 알차게 놀다 갔다. 22.07.05 7기 오리엔테이션 어제 아젠다에 등록..
[알고리즘/백준] 16401번 - 과자 나눠주기 16401번 과자 나눠주기 - https://www.acmicpc.net/problem/16401 카테고리 : 이분 탐색 / 매개변수 탐색 접근 방법 이 문제는 매개 변수 탐색 문제이다. 매개 변수 탐색이란 이분탐색을 사용하여 조건을 만족하는 최댓값을 구하는 방법이다. 1. 막대 과자 길이를 매개 변수(이분 탐색을 진행하는 대상)으로 설정한다. --> 최소 길이 1 / 최대 길이 max(snack) 을 start와 end로 설정 start, end = 1, max(snack) 2. mid만큼 자를 때 mid 길이로 잘릴 수 있는 개수를 세어준다. ex) 만약 길이가 11인 막대 과자를 5로 자른다면 5 / 5 / 1 로 잘리기 때문에 개수는 2개 cnt = sum([snack[i] // mid for i..
[42 서울] 라피신 사진 조각 모음 기록 내가 기억하려고 남기는 7기 2차 라피신 한달 사진 조각 모음 기록 22.05.16 ~ 22.06.10
[알고리즘/백준] 7576번 토마토 (BFS) 7576번 토마토 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 접근 방법 토마토가 보관 당시 익어있다면 배열에 1이라고 저장되어 있다. 이러한 토마토를 미리 시작 전 queue에 담아 BFS를 한다. for i in range(N): storage.append(list(map(int, input().split()))) ripe_tomatoes.extend([(i, j) for j in range(M) if storage[-1][j] == 1]) BFS를 할 때 위, 아래, 좌, ..
[42 서울] 라피신 20 ~ 26일 차 제일 불태웠던 마지막 일주일 기록 시작 내가 마지막 주차를 쓰고 있다니.. 진짜 피신이 끝났구나.. 😥 20일 차(6월 4일)는 rush02와 C09 시작 새로운 개념이 등장해서 허우적허우적 rush02는 개인 과제, BSQ랑 같이 진행하기에는 너무 바빠서 팀원분들과 풀이 방향에 대해 얘기해보다가 안 하기로 결정했다..! ㅠㅠ 다른 팀원분이 진짜 너무 잘하셔서 구현될 것 같다고 생각도 했는데 하면 할수록 예외처리가.. ㅎㅎ 저녁에 공부하다가 갑자기 다른 동료분들이 클러스터에 나온 인트라 홈페이지 시간을 계산해보기 시작했다. 계산한 시간 보니까 나만 한 20 ~ 30시간 차이 나서..... 갑자기 자극받았다. 근데 그게 하필 일주일밖에 안 남은 시점이었던 거지 🙄 일주일 ..