전체 글

전체 글

    [Python] 백준 16234번 - 인구 이동

    [Python] 백준 16234번 - 인구 이동

    문제: https://www.acmicpc.net/problem/16234 16234번: 인구 이동 N×N크기의 땅이 있고, 땅은 1×1개의 칸으로 나누어져 있다. 각각의 땅에는 나라가 하나씩 존재하며, r행 c열에 있는 나라에는 A[r][c]명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 모 www.acmicpc.net 처음에는 모든 좌표를 방문하면서 오른쪽과 아래방향의 나라만 비교하면 중복없이 연합 국가들을 찾을 수 있겠다고 생각했다. 그렇게 연합국들을 찾아 union 변수에 다 넣고 처리해주면 풀 수 있을 줄 알았다. 실제로 예제 1~4는 해당 방식으로 문제가 풀렸는데, 예제 5에서 오류가 떴다. 문제는 연합국들이 2개 이상의 지역으로 나눠지는 경우였다. 연합국 지역이 2개 이상이면, 매..

    [Python] 백준 18808번 - 스티커 붙이기

    [Python] 백준 18808번 - 스티커 붙이기

    문제: https://www.acmicpc.net/problem/18808 18808번: 스티커 붙이기 혜윤이는 최근에 다양한 대회를 참여하면서 노트북에 붙일 수 있는 스티커들을 많이 받았다. 스티커는 아래와 같이 사각 모눈종이 위에 인쇄되어 있으며, 스티커의 각 칸은 상하좌우로 모두 연 www.acmicpc.net 구현 문제였는데, 내가 푼 방법은 다음과 같다. 1. notebook과 동일한 temp_notebook을 생성 후, 두 값이 같을 동안 while 문을 돌린다. 2. while 문 내에서 노트북의 왼쪽 위 (0, 0)부터 오른쪽아래 (n, m)까지 돌며 스티커를 붙일 수 있는지 확인한다. 2-1. 만약 노트북에 스티커를 붙일 수 있으면 while문을 빠져나온다. 2-2. 노트북에 스티커를 붙..

    네트워크 소켓(포트) vs 유닉스 소켓

    네트워크 소켓(포트) vs 유닉스 소켓

    Gunicorn을 사용해서 3-tier architecture을 구축하던 중, 네트워크 소켓(포트 방식) 방식과 유닉스 소켓을 사용하는 방식이 있다는 걸 알게 되었다. 포트 방식보다 유닉스 소켓을 사용하면 더 빠르고 효율적이라고 해서 유닉스 소켓 방식으로 스크립트를 짰는데... 3-tier 구축은 WEB과 WAS 서버간의 통신이 필요하기 때문에 네트워크 소켓 방식을 사용해야 했다. 두 방식의 차이점에 대해 알아본 후 왜 네트워크 소켓 방식을 사용해야 하는지 알아보자. Network Socket vs Unix Socket Network Socket (Port) 네트워크 상에서 처리되는 커뮤니케이션 TCP/UDP 프로토콜을 사용해서 통신한다. Unix Socket IPC (Inter Process Commu..

    [Python] 백준 14891번 - 톱니바퀴 (재귀)

    [Python] 백준 14891번 - 톱니바퀴 (재귀)

    문제: https://www.acmicpc.net/problem/14891 14891번: 톱니바퀴 첫째 줄에 1번 톱니바퀴의 상태, 둘째 줄에 2번 톱니바퀴의 상태, 셋째 줄에 3번 톱니바퀴의 상태, 넷째 줄에 4번 톱니바퀴의 상태가 주어진다. 상태는 8개의 정수로 이루어져 있고, 12시방향부터 www.acmicpc.net https://jjung0326.tistory.com/96 [Python] 백준 14891번 - 톱니바퀴 문제: https://www.acmicpc.net/problem/14891 14891번: 톱니바퀴 첫째 줄에 1번 톱니바퀴의 상태, 둘째 줄에 2번 톱니바퀴의 상태, 셋째 줄에 3번 톱니바퀴의 상태, 넷째 줄에 4번 톱니바퀴의 상태가 주어진다. jjung0326.tistory.co..

    [Python] 백준 14891번 - 톱니바퀴

    [Python] 백준 14891번 - 톱니바퀴

    문제: https://www.acmicpc.net/problem/14891 14891번: 톱니바퀴 첫째 줄에 1번 톱니바퀴의 상태, 둘째 줄에 2번 톱니바퀴의 상태, 셋째 줄에 3번 톱니바퀴의 상태, 넷째 줄에 4번 톱니바퀴의 상태가 주어진다. 상태는 8개의 정수로 이루어져 있고, 12시방향부터 www.acmicpc.net 문제를 보고 완전 구현으로 풀었다. 모든 톱니가 한번에 한칸씩만 움직이고, 톱니 바퀴의 개수가 총 4개로 고정되어있기 때문에, 각 경우의 수마다 직접 하드코딩(^^..)으로 문제를 해결했다. 하지만 만약 톱니의 개수가 더 많아진다면, 경우의 수에 대한 구현으로 풀면 코드가 너무 길어진다. (이미 200줄을 넘어간다) 풀이를 보니 톨릴 톱니바퀴로부터 가장 먼 톱니바퀴부터 극을 확인하며 ..

    [Python] 백준 15686번 - 치킨 배달 (dfs 백트래킹)

    [Python] 백준 15686번 - 치킨 배달 (dfs 백트래킹)

    문제: https://www.acmicpc.net/problem/15686 15686번: 치킨 배달 크기가 N×N인 도시가 있다. 도시는 1×1크기의 칸으로 나누어져 있다. 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나이다. 도시의 칸은 (r, c)와 같은 형태로 나타내고, r행 c열 또는 위에서부터 r번째 칸 www.acmicpc.net 어제 치킨배달 문제를 combinations 조합으로 풀었다. (https://jjung0326.tistory.com/94) 같은 문제를 dfs 백트래킹으로도 풀어보았다. n, m = map(int, input().split()) board = [list(map(int, input().split())) for _ in range(n)] chicken = [] house..

    [Python] 백준 15686번 - 치킨 배달

    [Python] 백준 15686번 - 치킨 배달

    문제: https://www.acmicpc.net/problem/15686 15686번: 치킨 배달 크기가 N×N인 도시가 있다. 도시는 1×1크기의 칸으로 나누어져 있다. 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나이다. 도시의 칸은 (r, c)와 같은 형태로 나타내고, r행 c열 또는 위에서부터 r번째 칸 www.acmicpc.net BFS를 활용해서 풀이를 했다. 치킨집에 대한 배열을 만들고, 치킨집 하나하나를 bfs해가면서 각 집들과의 거리를 계산해주었다. 이때 각 집들과의 거리 합을 통해 합이 큰 순서대로 치킨집을 (전체치킨칩-m개) 만큼 삭제해주면 되겠다고 생각했다. from collections import deque n, m = map(int, input().split()) board =..

    [Python] 백준 21608번 - 상어 초등학교

    [Python] 백준 21608번 - 상어 초등학교

    문제: https://www.acmicpc.net/problem/21608 21608번: 상어 초등학교 상어 초등학교에는 교실이 하나 있고, 교실은 N×N 크기의 격자로 나타낼 수 있다. 학교에 다니는 학생의 수는 N2명이다. 오늘은 모든 학생의 자리를 정하는 날이다. 학생은 1번부터 N2번까지 번호 www.acmicpc.net 특별한 알고리즘 없이 요구하는대로 구현만 하면 되는 문제였다. 입력값 좌표가 (1, 1) ~ (n, n) 기준이었기 때문에, 나는 (0, 0) ~ (n-1, n-1)로 수정해주었다. 또한 입력값을 list에 받으면 자리배정을 받아야 할 학생과 좋아하는 친구 list가 헷갈려서 dictionary에 담아 풀었다. dictionary의 Key값으로는 자리 배정을 받아야하는 학생, V..