전체 글

개발 블로그 💻👩‍💻
0. 문제 두 로봇 15971번: 두 로봇 2018년 강원도에서 새로운 동굴이 발견되었다. 이 동굴에는 총 N개의 넓은 방이 존재하며 좁은 통로로 서로 연결되어 있는 것으로 밝혀졌다. N개의 방은 1번부터 N번까지의 번호를 붙여 1번 방, 2번 www.acmicpc.net 1. 문제 생각 한점 -> 여러 점의 최단거리를 구현할 수 있는 다익스트라를 사용했다. 다만 다익스트라 q에 넣을 때 (cost, 노드, 지금까지 나온 경로 중 최댓값)으로 가져가면서 풀었다. 입력값으로 받은 start부터 -> 모든 다른 점까지의 최단거리를 구한 후 이렇게 진행하면서 거쳐가게 되는 간선 중 가장 큰 가중치를 가지는 것들을 함께 가져갔다. 이후 start로부터 end까지의 거리인 distance[end]에서 max_di..
0. 문제 트리 4256번: 트리 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스의 첫째 줄에는 노드의 개수 n이 주어진다. (1 ≤ n ≤ 1,000) BT의 모든 노드에는 1부터 n까지 서로 다른 번호가 매겨져 있다. 다음 www.acmicpc.net 1. 문제 생각 전위순회, 중위순회, 후위순회의 핵심은 규칙과 재귀이다. 재귀에서도 사실상 어디에서 재귀로 진입하는가(반환하는가) 가 가장 중요하다. -> 기초 설명 위 문제에서도 전위, 중위 순회일 떄 규칙적으로 왼쪽/오른쪽으로 빠지는 것이 규칙적으로 진행됨을 알 수 있다. 따라서 recursion을 전위, 중위 순회에 따라 root 노드 -> left 노드 -> right 노드로 들어가도록 구현하고 if (currentNode){ ..
0. 문제 후보 추천하기 1713번: 후보 추천하기 첫째 줄에는 사진틀의 개수 N이 주어진다. (1 ≤ N ≤ 20) 둘째 줄에는 전체 학생의 총 추천 횟수가 주어지고, 셋째 줄에는 추천받은 학생을 나타내는 번호가 빈 칸을 사이에 두고 추천받은 순서대 www.acmicpc.net 1. 문제 생각 1
0. 문제 별 찍기 - 11 2448번: 별 찍기 - 11 첫째 줄에 N이 주어진다. N은 항상 3×2k 수이다. (3, 6, 12, 24, 48, ...) (0 ≤ k ≤ 10, k는 정수) www.acmicpc.net 1. 문제 생각 규칙을 유추해보는 과정, 패턴을 파악하는 것이 그리 어렵지는 않았으나 마음처럼 뭉탱이로 구현할 수 없어 생각을 좀 더 했던 것 같다! 재귀적으로 패턴이 반복되는 것이 보여서 아래 종이에서 보이는 것처럼 12를 채우기 위해 6으로 쪼개서 나아가고 다시 6을 채우기 위해 3으로 쪼개서 나아가는 방법으로 분할정복 재귀를 써야겠다고 생각했다. 평소 그리는 분할정복의 로직은 아래와 같다. def div_conquer(): #가장 밑 분할 노드 도착했을 때 return #분할해서 ..
0. 문제 캠프 준비 16938번: 캠프 준비 난이도가 10, 30인 문제를 고르거나, 20, 30인 문제를 고르면 된다. www.acmicpc.net 1. 문제 생각 처음에는 투포인터일까? 싶었다. 하지만 투포인터는 각 요소가 모두 다를 때 효율적인데 입력값에서 배열이 [10, 10, 20, 10, 40] 으로 들어온다면 이는 별 효율이 없을 것 같았다. 이후 입력값이 고작 N= L and sum(List) = X: # print(List) ans+=1 #return하면 안됨 . => 한 번 더 가야할 수도 있으니까 for i in range(node+1, N): # 1 ~ N 까지 if not visited[i]: # 중복 확인 visited[i]=1 backtracking(i, visited,Lis..
0. 문제 스카이라인 쉬운거 1863번: 스카이라인 쉬운거 첫째 줄에 n이 주어진다. (1 ≤ n ≤ 50,000) 다음 n개의 줄에는 왼쪽부터 스카이라인을 보아 갈 때 스카이라인의 고도가 바뀌는 지점의 좌표 x와 y가 주어진다. (1 ≤ x ≤ 1,000,000. 0 ≤ y ≤ 500,000) 첫 www.acmicpc.net 1. 문제 생각 처음에는 스카이라인이라고 해서 라인스위핑이겠거니 하고 달려들었다! 하지만 예제를 보면 처참히 깨질 수 있는데.. 하나씩 순차적으로 파악하는 형태의 로직이 아니다. 즉, 앞에서의 상황이 뒤에 의존될 수 있다. 입력값에서 주어지는 것은 '스카이라인의 고도가 바뀌는 지점의 좌표 x와 y' 이다. 즉, 이 곳에서는 무조건! 고도가 바뀌어야 한다. 그렇다면 위 그림의 상황을..
1. 문제 개미 3048번: 개미 T초가 지난 후에 개미의 순서를 출력한다. 첫 번째 개미 그룹은 왼쪽에서 오른쪽으로 움직이고, 두 번째 그룹은 반대 방향으로 움직인다. www.acmicpc.net 2. 문제 생각 처음에는 규칙을 찾으려고 했다. T가 몇 번일 때 바뀌는 것과 바뀌지 않는 것들이 몇 번인지를 기준으로 찾아서 구현하려고 하였다. 이후 다시 보니 아래의 두 힌트가 명시적으로 N1과 N2가 굉장히 작고 T도 50밖에 되지 않아 빡구현이겠구나 하고 생각하였다. 3. 문제 풀이 N,M=map(int,input().split()) A=list(input()) B=list(input()) T=int(input()) start=A[::-1]+B for _ in range(T): flag=False; #..
0. 에필로그 원래 백준 문제는 블로그에 안 쓰고 개인적으로 정리했는데 코알라 면접 보다가 큰 영감을 얻어 열심히 기록해볼 생각이다! 👻 일주일에 적어도 5개는 풀어야징 1. 문제 https://www.acmicpc.net/problem/21278 21278번: 호석이 두 마리 치킨위의 그림과 같이 1번과 2번 건물에 치킨집을 짓게 되면 1번부터 5번 건물에 대해 치킨집까지의 왕복 시간이 0, 0, 2, 2, 2 로 최소가 된다. 2번과 3번 건물에 지어도 동일한 왕복 시간이 나오지만 더 www.acmicpc.net2. 생각 "모든 건물에서 가장 가까운 치킨집까지 왕복하는 최단 시간의 총합"을 최소화할 수 있는 건물 두 개를 고르는 문제이다. 우선 이 문제에서 요구하는 현상을 2차원 그래프로 표현할 수 ..
OpenAI 와 open API OpenAI에서 chatGPT와 관련한 open API를 배포하였기 때문에 이제 누구나 손쉽고 편리하게 ChatGPT API를 이용해서 애플리케이션을 제작할 수 있게 되었다. ChatGPT API와 Whisper API 연동 방법 API 사용법에 관련하여 공식 문서로 제공이 되어 있어 이를 공부해 구현해볼 수 있었다. 내가 지금껏 썼던 OPEN API는 보통 라이브러리 형식이라 다운로드하여 import해서 쓰는 형식이 많았는데, OpenAI에서 제공해주는 API는 HTTP 통신 형태로 CURL 명령어를 보며 이해해야 하는 과정이 있었다. CURL 명령어 curl(client url) 명령어는 프로토콜들을 이용해 URL 로 데이터를 전송하여 서버에 데이터를 보내거나 가져올때..
· 회고
2023년 SO-HOT 해커톤 (공동해커톤 예선전) SW중심대학 공동 해커톤 본선 진출 학생을 선발하는 해커톤 예선전으로, 항공대학교 항공우주박물관 2층 비전홀에서 2박 3일동안 실시되었다. 2명~5명으로 이루어진 팀으로 출전 가능하다. 해커톤 참여 계기 지난 5월 5일 18시부터 부터 5월 7일 9시까지 진행하는 KAU SOHOT 해커톤에 아주 좋은 기회로 참여하게 되었다🤗 2022에 이어 2023에도 참여하게 되어 감회가 새로웠다..! 작년에는 1박 2일로 진행했는데 이번에는 2박 3일로 개발할 수 있는 시간이 길어져 좀 더 다양한 걸 시도해보고 싶다는 생각으로 임하게 되었다. 해커톤 주제와 아이디어 선정 과정 주제는 자유주제라 봐도 무방한 느낌의 '불가능을 가능하게' 였다. 팀을 짜고 나오는 거라,..
시간이 없는 관계로 문제 풀이로 대체한다..!!!! 😭😭 1. 라우터와 스위치의 유사점과 차이점을 설명하시오. 라우터 스위치 유사점 포워딩 테이블이 존재한다. 차이점 IP 주소로 포워딩하는 네트워크 계층 MAC 주소로 포워딩하는 링크 계층 IP와 MAC 주소를 가진다. 주소 없이 투명하다. 네트워크 관리자의 관리가 필요하다. self-learning으로 이루어진다. 계층구조 평면 구조 2. 스위치의 4가지 기능을 나열하고 각각에 대해 설명하시오. self-learning 1. 스위치 테이블은 초기에 비어있다. 2. 인터페이스로 수신(A->A')한 각 프레임에 대해 스위치는 프레임의 출발지 주소 필드에 있는 MAC 주소 / 프레임이 도착한 인터페이스 / 현재 시간 을 저장한다. 3. 일정시간(aging t..
본 내용은 Computer Networking: A Top-down Approach 를 읽고 공부한 내용입니다. 목차 1. 개요 2. 라우팅 알고리즘 컨트롤러로 가는 중요한 메시지들은 다음과 같다. flow-removed(플로우 제거) : 컨트롤러에게 어떤 플로우 테이블 엔트리가 시간이 만료되었거나 상태 수정 메시지를 수신한 결과로 삭제되었음을 알린다. packet-in(패킷 전달): 패킷을 컨트롤러에 보낸다. port-status(포트 상태): 포트의 상태변화 알린다. 4. SDN 컨트롤러 시나리오
백준에는 잘 나오지 않는 부분 배열/부분 집합 DP 로직에 대해 정리해 보았다. 1차원 배열 A에서 생각해볼 수 있는 DP 접근을 다양하게 해볼 수 있다. 간단한 목차는 아래와 같다. 1. 배열 A의 부분 배열의 최댓값 (제한 X) 2. 배열 A의 k개의 연속한 부분 배열의 최댓값 (k개라는 제한이 존재한다) 3. 배열 A의 k개 이상 연속한 부분 배열의 최댓값 (k개 이상이라는 제한이 존재한다.) 4. 배열 A에서 부분집합의 합이 S인 부분집합이 존재하는가? (존재 여부, 제한 X) 5. 배열 A에서 k개의 부분집합의 합이 S인 부분집합이 존재하는가? (존재 여부, k개라는 제한이 존재한다)1. 배열 A의 부분 배열의 최댓값 (제한 X)배열 A가 주어졌을 때, 이 배열의 부분 배열 A의 최댓값을 구하라..
본 내용은 Computer Networking: A Top-down Approach 를 읽고 공부한 내용입니다. 목차 1. 네트워크 계층 개요 1) 포워딩과 라우팅 2) 네트워크 서비스 모델 3) connection, connection-less service 2. VC와 datagram networks 1) VC 2) datagram networks 3) VC vs datagram networks 3. 라우터 내부에는 무엇이 있을까? 1) 라우터 내부 알아보기 2) 입력포트 3) 스위칭 구조 4) 출력포트 4. 인터넷 프로토콜(IP): IPv4, 주소 지정, IPv6 등 1) IPv4 데이터그램 형식 2) IPv4 데이터그램 단편화 3) IPv4 주소체계 4) DHCP 5) 네트워크 주소 변환(NAT)..
· CS/OS
본 내용은 Operating System Concepts 8th Edition 번역본 책을 읽고 공부한 내용입니다. 목차 1. 파일이란? 1) 파일에 대한 개념 2) 파일이 User에게 주는 효과 3) 파일 연산 4) 파일 접근 방식 5) file과 directory의 공통점과 차이점? 3. Organization of Files 1) 이전에 사용하던 방식 2) multilevel indexed allocation 3. Data Structures for File 1) UNIX FILE SYSTEM 2) 단일/이중/삼중 간접 인덱스 3) Directory 찾아가기 4. 디스크 1) Disk Head Scheduling 2) Redundant Array Of Inexpensive disk 1. 파일이란? ..
· CS/OS
본 내용은 Operating System Concepts 8th Edition 번역본 책을 읽고 공부한 내용입니다. 목차 1. 메모리 관리의 개념 및 목표 1) Classifying information stored in memory 2) segments of a process 3) 주소의 할당 4) 논리 vs 물리 주소 공간 2. Swapping 3. Linking 4. Loading 5. Running the program 1) Static Memory Allocation 2) Dynamic Memory Allocation 6. Multiprogramming - Goals in Sharing the Memory Space 1) Static Relocation 2) Dynamic Relocation 7..
평소 ec2에 docker image를 올리는 과정에서 환경변수를 그대로 올리는 형태로 구현해왔다. 아래와 같이 docker image 속에 ec2 host, docker ID/password 등이 그대로 적혀 있게 되면 docker가 private이면 그나마 괜찮겠지만.. public이라면!!😱😱 이 image가 그대로 노출되어 버렸을 때 큰 불상사를 야기할 수 있다.!! 지갑을 지키자 이를 해결하는 효율적인 방법으로 ec2 server단에 환경변수를 저장하는 방법이 존재한다. ec2 ubuntu 환경에서 파일을 만드는 것이다. 아래 명령어를 통해 .env 파일을 만들 수 있다. vim .env ##파일이 없으면 생성, 있으면 수정 또는 추가 .env파일은 초기에 비어있다. 환경변수값은 applicat..
· CS/OS
본 내용은 Operating System Concepts 8th Edition 번역본 책을 읽고 공부한 내용입니다. 목차 1. Deadlock 필요조건들 1) 상호배제(mutual exclusion) 2) 점유하며 대기(hold-and-wait) 3) 비선점(no preemption) 4) 순환대기(circular wait) 2. 자원 할당 그래프(Resource-Allocation Graph) 1) RAG 구성요소 2) RAG - 사이클 기본 3) RAG - 사이클 심화 4) RAG - 순환적 연결 knot 3. 교착상태 예방(Deadlock Prevention) 4가지 필요조건 중에서 최소한 하나가 성립하지 않도록 하는 방법들 4. 교착상태 회피(Deadlock Avoidance) 1) 자원당 인스턴..
· CS/OS
본 내용은 Operating System Concepts 8th Edition 번역본 책을 읽고 공부한 내용입니다. 목차 1. CPU 스케줄링 1) 목표 2) CPU-I/O burst cycle 3) CPU 스케줄링을 위한 Decision Making - 선점/비선점 스케줄링 4) CPU 스케줄링을 위한 Decision Making - Dispatcher 2. 스케줄링 알고리즘 1) 스케줄링 기준 2) FCFS 3) SJF 4) Round-Robin Scheduling 5) SRT 6) Priority Scheduling 7) Multilevel Queue Scheduling 8) Multilevel Feedback Queue Scheduling 1. CPU 스케줄링 1. CPU 스케줄링의 목표 다중프로..
본 내용은 Computer Networking: A Top-down Approach 를 읽고 공부한 내용입니다. 목차 1. 혼잡제어의 원인과 비용 1) 시나리오1: 두 개의 송신자와 무한 버퍼를 가지는 하나의 라우터 2) 시나리오2: 두 개의 송신자, 유한 버퍼를 가지는 하나의 라우터 3) 시나리오 3: 네 개의 송신자와 유한 버퍼를 가지는 라우터, 그리고 멀티홉 경로 2. 혼잡제어에 대한 접근법 1) 종단간의 혼잡제어 2) 네트워크 지원 혼잡제어 3. 혼잡제어의 여러 사례 1) ATM ABR 2) RM 4. TCP 혼잡제어 1) TCP의 알고리즘 2) AIMD 3) Slow Start 4) TimeOut 5) Fast Recovery 5. TCP 공정성 1. 혼잡제어의 원인과 비용 1.1 시나리오1: ..
jeonyoungseo
youngseo's TECH blog