2025/06 13

(C#) N으로 표현

코딩테스트 연습 - N으로 표현 | 프로그래머스 스쿨 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 딱 보자마자 풀이가 떠오르지는 않는 문제였다. 오히려 감조차 잡을수 없었다. 혼자 고민 해서는 풀지 못할듯 하여 검색해보았다. 핵심 아이디어는 동적 프로그래밍을 사용하는데, dp[i]에는 N을 i번 사용해서 만들 수 있는 숫자들을 기록하는 것이었다. 지금까지의 동적 프로그래밍에서는 dp[i]에 하나의 값만 기록했었는데, 이렇게 데이터셋을 기록하는 방식이 새로웠다. dp에 들어갈 자료구조는 HashSet을 사용했다. HashSet은 javascript의 Set와 같은 자료구조로, 중복값을 허용하지 않는다. Ha..

코딩연습 2025.06.30

로아M 비전프리뷰 후기

목요일 2회차(14:30~17:30)을 다녀왔다 이런 게임 행사는 COHO fgt 이후로 처음이어서 긴장되기도 하고 설레기도 했다 체험해봤던 순서대로 이야기해보려한다 1. 카오스 브레이크(★★★★★) 소드마스터로 플레이했다 체험 전에 카오스 브레이크가 별로라는 이야기가 많아서 오히려 기대했다. 얼마나 똥겜인걸까? 막상 플레이해보니 엄청 재밌었다. 전형적인 핵&슬래시와 로그라이크를 합친 게임이었다. 처음에는 평타와 스킬 하나로만 진행해야해서 이게 뭔가 싶지만 곧 두번째 스킬이 나오고, 선택지에 따라 스킬이 다양하게 변화하는게 좋았다. 레이드 컨텐츠로 가면 스킬세팅이 고정되는데, 여기서라도 다양한 트라이포드를 적용해볼 수 있을것 같다. 공격력, 방어력, 이동속도 등 기본스탯을 증가시켜주는 선택지도 있..

일기 2025.06.20

(C#) 베스트앨범

코딩테스트 연습 - 베스트앨범 | 프로그래머스 스쿨 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr뭐 특별한 알고리즘이나 자료구조를 사용할 것도 없이 요구사항만 구현하면 된다. 입력받은 두 배열로 Dictionary를 만든다.Dictionary는 장르와 해당 장르의 총합, 제일 많이 플레이된 노래, 두번째로 많이 플레이된 노래를 가진다.다음은 장르들을 총합으로 정렬하고 순서대로 answer에 추가해준다. answer는 배열 형태인데, 배열의 크기를 미리 정할 수 없어서 List 형태로 먼저 만들고 array로 변환했다.using System;using System.Collections.Generic;using S..

코딩연습 2025.06.19

(C#) 지형 이동

코딩테스트 연습 - 지형 이동 | 프로그래머스 스쿨 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 지형을 사다리 없이 이동할 수 있는 구역으로 나누고, 각 구역들에서 최소신장트리를 찾는다 BFS를 통해 사다리 없이 이동할 수 있는 구역들로 나눈다. BFS는 많이 써봤으니까 그냥 하면 된다. visited[,] 라는 이름으로 2차원 배열을 만들어서 구역들을 표시했다. 다음은 각 구역들에서 다른 구역으로 가는 간선을 만든다. 예시의 그림에서라면 노란색 구역의 5에서 파란색 구역의 10으로 가는 사다리를 4개 놓을 수 있고, 파란색 구역에서 빨간색 구역으로 가는 사다리를 2개 놓을 수 있다. 각 사다리에 대해서 ..

코딩연습 2025.06.16

IP(Internet Protocol)

1. IP의 정의IP(Internet Protocol)는 인터넷 계층(Layer 3)에 해당하며, 각 장치에 고유한 주소(IP 주소)를 부여하고, 목적지까지 데이터를 전달하는 역할을 수행하는 비연결형, 비신뢰성 프로토콜입니다.비연결형(Connectionless): 사전에 연결을 설정하지 않고, 각 패킷은 독립적으로 전송됩니다.비신뢰성(Unreliable): 전송 오류나 순서 보장은 하지 않으며, 이러한 기능은 TCP 등 상위 계층에서 보장합니다.2. IP의 등장 배경초기 컴퓨터 네트워크는 각각의 하드웨어와 운영체제에 따라 독자적인 프로토콜을 사용했습니다. IBM, DEC, Apple 등은 각기 다른 통신 방식을 개발하여 자사 제품 간에는 통신이 가능했지만, 이기종 장비 간에는 상호운용성이 없었습니다.이에..

CS/네트워크 2025.06.13

네트워크 이론

네트워크 이론의 등장 배경컴퓨터가 처음 등장했을 때, 각각의 시스템은 독립적으로 동작했습니다. 그러나 시간이 지나면서 여러 컴퓨터를 연결하여 정보를 주고받고자 하는 수요가 급증했습니다. 초기에는 각 제조사가 고유의 방식으로 장치를 연결했기 때문에, 서로 다른 시스템 간에는 직접적인 통신이 거의 불가능했습니다.예를 들어 IBM의 장비는 IBM 장비끼리만, DEC의 장비는 DEC 장비끼리만 통신할 수 있는 방식이었고, 이는 기업과 기관의 확장성, 유지보수, 협업에 큰 제약을 주었습니다. 이러한 상호운용성 부족(Interoperability issue)이 심각한 문제로 부상했습니다.또한, 컴퓨터 간 통신에는 명확한 규칙이 없었기 때문에 데이터의 전송, 해석, 흐름 제어 등에 대해 모든 개발자가 제각기 다른 방..

CS/네트워크 2025.06.13

OSI 7계층과 TCP/IP 4계층 모델

OSI와 TCP/IP 모델의 발전 과정1. 네트워크 통신의 초창기 (1960~1970년대)초기에는 제조사별 독자적인 통신 프로토콜(예: IBM SNA, DECnet)을 사용서로 다른 네트워크 간 호환성 없음: 특정 벤더 장비끼리만 통신 가능네트워크 간 상호 연결에 대한 표준화 요구가 증가2. TCP/IP 모델의 등장 (1970년대 후반)1973년 미국 국방부(DARPA)의 ARPANET 프로젝트에서 TCP/IP 연구 시작1974년: Vint Cerf와 Bob Kahn이 TCP 프로토콜 개념 발표1981년: TCP와 IP가 분리되어 각각 정의됨 (RFC 791, RFC 793)1983년 1월 1일: ARPANET이 TCP/IP 프로토콜로 전면 전환 (인터넷의 시작)단순하고 실용적인 4계층 구조로 실제 운영..

CS/네트워크 2025.06.13

(C#) 섬 연결하기

코딩테스트 연습 - 섬 연결하기 | 프로그래머스 스쿨 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 모든 정점을 포함하는 최단 경로를 구하는 문제 -> 크루스칼 알고리즘을 적용하기로 했다사실 처음에는 이전에 다른 문제를 풀 때 사용했던 플루이드-워셜 알고리즘을 적용하려고 했는데, 잘 안됐다 크루스칼 알고리즘은 최소신장트리를 구하는 알고리즘이다최소신장트리는 모든 정점을 포함하고 순환 구조가 없는 트리들 중에 가중치 합이 최소인 트리를 말한다 아무튼 크루스칼 알고리즘을 적용하면 모든 섬을 연결하는 경로 중 최단 경로를 구할 수 있다 1. 간선들의 가중치를 오름차순으로 정렬한다2. 가장 가중치가 작은 간선을 연결한다..

코딩연습 2025.06.13

(C#) 쿠키 구입

코딩테스트 연습 - 쿠키 구입 | 프로그래머스 스쿨 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 보기에 굉장히 단순한 문제우선 완전탐색으로 풀어보기로 했다. 가능한 모든 부분순열 s를 첫째 아들에게 줄 [l, m] 쿠키라고 하고, s[l, m] = s[m+1, r]를 만족하는 r을 찾는다. [l, m] 구간을 만드는 방법은 1부터 n까지의 정수 중에서 두개를 뽑는 것이므로 O(n^2) s[l, m] = s[m+1, r]을 만족하는 r을 찾는 것은 O(n^2) (r을 m+1부터 마지막 요소까지 순회하면서 요소들의 합을 구해야한다) 최종 시간복잡도는 O(n^4)이 된다 O(n^4)는 시간복잡도가 너무 크기때문..

코딩연습 2025.06.12

(C#) 숫자 게임

코딩테스트 연습 - 숫자 게임 | 프로그래머스 스쿨 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr그냥 단순하게 풀었다.A와 B를 내림차순으로 정렬해놓고, A와 B의 요소를 하나씩 비교한다.B가 이길 수 있다면 그대로 이기면 된다.B가 이길 수 없다면 B에서 제일 약한 사람을 보낸다. 코드using System;public class Solution { public int solution(int[] A, int[] B) { int answer = 0; Array.Sort(A, (a, b) => { return b - a; }); Array.Sort(B, (a, b)..

코딩연습 2025.06.05