문제 정보 문제 출처: 백준 온라인 저지 문제 링크: 16953 A -> B 제출 언어: Swift 알고리즘 분류: 그래프 이론 그리디 알고리즘 그래프 탐색 너비 우선 탐색 풀이 숫자 A에서 B로 만드려면 2를 곱하기와 맨 뒷 자리에 1 붙이기를 반복해야 한다. 만약 예를 들어 2부터 시작한다면, 4와 21로 만들 수 있고, 또 4로는 8과 41, 21로는 42와 211을 만들 수 있다. 하나의 숫자로 두 개의 수를 만들 수 있으므로 다음과 같은 피라미드 형태의 수열이 생긴다. 우리가 구하려는 것은 필요한 연산의 최솟값이므로 BFS로 Depth별로 탐색하여, B의 숫자에 도달하면 해당 Depth를 반환하고, 도달하지 못하는 경우 -1을 반환하는 알고리즘을 작성하였다 BFS 적용 먼저 처음 숫자인 A를 q..
문제 정보 문제 출처: 백준 온라인 저지 문제 링크: 2606 바이러스 제출 언어: Swift 알고리즘 분류: 그래프 이론 그래프 탐색 너비 우선 탐색 풀이 해당 문제는 그래프에서 쌍방향으로 연결되어 있는 노드의 개수를 카운트하는 것으로 이해하였다 나는 이 문제를 BFS(Breadth-First-Search)를 이용하여 풀이하였다 DFS로도 풀 수 있는 문제였지만 점진적으로 퍼져가는 바이러스를 시각적으로 표현하기에는 BFS가 적당할 것 같았다 for i in 0.. count = 0분명히 컴퓨터들은 쌍방향 연결이지만, 내가 직전에 짠 코드는 앞에 써져 있는 숫자의 컴퓨터가 뒤에 써져 있는 숫자의 컴퓨터로 바이러스가 퍼지는 경우만 고려하였다 그러므로 다음과 같이 코드를 변경해주었다 단순히 반대방향으로의 경..
사물인터넷이란 ? 각 종 사물에 센서와 통신기술을 이용하여 인터넷에 연결하는 것 사물인터넷 프로토콜 HTTP (Hyper Text Transfer Protocol) CoAP (Constrained Application Protocol) MQTT (Message Queueing Telemetry Transport) HTTP의 기본 동작 HTTP : 서버와 클라이언트 사이의 응용 프로토콜로 클라이언트가 서버에게 정보를 요청 (HTTP Request) 하면 서버는 응답 (HTTP Response) 을 전송하는 구조이다 요청은 URL(Uniform Resource Locator)로 구성되어 서버에게 전달됨 서버는 URL을 분해하여 요청을 처리함 서로 연결할 수 있는 장치 많고 웹 브라우저를 통한 연결 가능 ur..
문제 정보 문제 출처 코딩테스트 연습 | 프로그래머스 스쿨 개발자 취업의 필수 관문 코딩테스트를 철저하게 연습하고 대비할 수 있는 문제를 총망라! 프로그래머스에서 선발한 문제로 유형을 파악하고 실력을 업그레이드해 보세요! school.programmers.co.kr 문제 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 제출 언어: Swift 알고리즘 분류: 그리디 문제 설명 당신은 일렬로 나열된 n개의 집에 택배를 배달하려 합니다. 배달할 물건은 모두 크기가 같은 재활용 택배 상자에 담아 배달하며, 배달을 다니면서 빈 재활용 택배 상자들을 수거하려 합..
TCP/UDP 멀티스레드 서버 프로그래밍 서버의 종류 반복 서버 (iterative server) 클라이언트 요청을 하나씩 서비스하는 서버 여러 클라이언트 동시 요청 시 앞의 클라이언트 서비스 종료까지 대기해야 됨 대기 시간이 길어지는 단점 병행 서버 (concurrent server) 반복 서버의 단점 극복 클라이언트들을 동시에 서비스하는 서버 방식 종류 스레드 방식 : 클라이언트 마다 별도의 스레드 사용 → 멀티 스레드 이벤트 구동 방식 : 이벤트가 발생하면 처리하는 방식 TCP 멀티스레드 서버 스레드 : 운영체제에 의해 시간이 배분되고 관리되는 프로그램의 실행 단위 스택, 데이터 메모리 등을 공유 스레드를 생성하고 스레드에게 함수의 실행을 맡기면 사용자의 개입이 필요 없음 메인 스레드는 클라이언트를..
소켓 네트워크 프로그래밍 네트워크 관련 파이썬 표준 모듈 인터넷 : TCP/IP 프로토콜을 사용하여 네트워크를 통해 연결된 장치 사이의 통신임 TCP/IP protocol(Transmission Control Protocol/Internet Protocol) : 컴퓨터 서로 통신하는 경우, 특정 규칙이나 프로토콜을 사용하여 순서대로 데이터를 전송 및 수실할 수 있다. 이때 사용하는 규칙중 하나가 TCP/IP 임. ex: 메일, 컴퓨터 간 파일 전송, 원격 로그인 등 파이썬에서는 TCP/IP 통신을 위한 표준 모듈을 제공 ipaddress 모듈 socket 모듈 네트워크 서비스를 위한 파이썬 표준 모듈 ipaddress: 인터넷 주소 관련 작업 모듈 해당 IP 주소가 유효한지 확인하는 경우에도 사용 IPv..
문제 정보 문제 출처: 백준 온라인 저지 문제 링크: 2178 미로 탐색 제출 언어: Swift 알고리즘 분류: 그래프 이론 그래프 탐색 너비 우선 탐색 풀이 BFS 모든 경로를 방문하는 것이 아니고 최단 거리를 찾는 문제이므로, 너비 우선 탐색으로 문제를 풀어야만 했다 그냥 BFS 문제처럼 방문해야 하는 노드를 넣는 queue를 하나 생성하고, queue하나를 꺼낼 때마다 동서남북에 있는 노드들을 확인해서, 방문하지 않았고, 해당 숫자가 1이라 이동할 수 있는 칸일경우 그 칸을 또 queue에 넣는다. 이 때, 도착위치로 이동할 수 있는 최소한의 경로를 찾아야하므로, queue에서 꺼낸 값이 도착위치일 때, 해당 depth를 구하면 된다 depth를 구하기 위해 queue에 넣는 tuple내에 이전 노..
문제 정보 문제 출처: 백준 온라인 저지 문제 링크: 1303 전쟁 - 전투 제출 언어: Swift 알고리즘 분류: 그래프 이론 그래프 탐색 너비 우선 탐색 깊이 우선 탐색 풀이 기본 BFS, DFS문제에 마지막 병사의 수를 제곱해서 더해주는 부분만 처리해주면 되는 문제였다 나는 visited 2차원 배열로 방문 여부를 파악하고 arr에 전쟁터에 있는 병사의 팀 상태를 입력해준다 func countSoldier(_ team: Character, _ x: Int, _ y: Int, _ count: inout Int) -> Int { visited[x][y] = true guard arr[x][y] == team else {return count} for i in 0...3 { if arr[x+dx[i]][..