Loading [MathJax]/jax/output/CommonHTML/jax.js

전체 글 62

[python] 객체 지향 프로그래밍 1 - Object oriented python

객체 지향 프로그래밍은 왜 쓸까? 파이썬 수업을 처음 들을 때 파이썬의 창시자가 크리스마스에 할 일이 없어 만든 언어라는 것과 함께 듣는 내용이 "python은 객체 지향 언어다" 라는 말이다. 그런데 python을 사용하다보면 object나 class를 사용하지 않아도 필요한 코드를 작성하는데 큰 문제가 없다. 그런데 만약 1)다른 사람들과 협업을 하거나 2)혼자라도 다루기 어려울 정도로 복잡한 프로그램을 작성하게 된다면 Object-oriented programming이 필요하게 될 것이다. object는 현실의 대상을 모델링해 class를 정의하고 한번 정의된 class를 재사용해 여러 개의 instance를 생성하기 때문에 코드 작정 중 실수를 줄이고 사람이 이해하기 쉬운 코드를..

[python 백준] 14890번 경사로

문제 링크 14890번: 경사로 첫째 줄에 N 2N100과 L 1LN이 주어진다. 둘째 줄부터 N개의 줄에 지도가 주어진다. 각 칸의 높이는 10보다 작거나 같은 자연수이다. www.acmicpc.net 문제 설명 2 차원 배열로 높이가 주어지는 지도에서 높이 차이가 1이고 길이가 L인 경사로를 놓아 지나갈 수 있는 경로의 수를 구하는 문제 배열의 크기가 N×N일 때, 행 방향의 N개의 경로가 있고, 열 방향의 N개의 경로가 있어 행 방향과 열 방향 두번 탐색을 해주어야함 고민한 부분 경사로를 놓아야 하는 경우는 높이가 낮아지는 경우와 높아지는 경우로 나누어 생각할 수 있고 경사로의 높이는 1로 고정되어 있기 때문에 만약 높이 차이가 1보다 크다면 경로 확인을..

[python 백준] 15685번 드래곤 커브

문제링크 15685번: 드래곤 커브 첫째 줄에 드래곤 커브의 개수 N1N20이 주어진다. 둘째 줄부터 N개의 줄에는 드래곤 커브의 정보가 주어진다. 드래곤 커브의 정보는 네 정수 x, y, d, g로 이루어져 있다. x와 y는 드래곤 커 www.acmicpc.net 문제 설명 일정한 규칙에 따라 세대를 거듭해 성장하는 드레곤 커브를 구현하면 되는 구현 문제 드래곤 커브가 성장하는 규칙을 어떻게 구현할 지 생각해내는 것이 어려운 문제 고민한 부분 드래곤 커브가 성장하는 규칙은 K 세대의 커브의 끝 점을 기준으로 K 세대의 커브 전체를 시계 방향으로 90도 회전시켜 붙인 것이다. 이전 세대의 마지막 점부터 시작점까지 역순으로 이동해 온 경로의 역순으로 이동한 방향을 반시계 방향으로 90도 회전..

[네트워크] 네트워크란

이 포스팅은 모두의 네트워크와 Linkedin learning의 Networking Foundations: Networking Basics강의를 수강하고 정리한 글입니다. 네트워크의 구조 네트워크는 두대 이상의 컴퓨터가 연결되어 데이터를 주고 받을 수 있는 구조다. 인터넷은 전 세계의 네트워크를 연결한 거대한 네트워크라고 할 수 있다. 네트워크는 패킷이라는 데이터의 조각을 한 쪽에서 전기 신호로 전달하고 다른 한 쪽에서 송신해 복원하는 과정으로 통신한다. 정보는 0과 1을 나타낼 수 있는 bit로 나타낼 수 있지만 bit는 너무 작은 단위이기 때문에 8bit로 구성되는 byte단위를 사용한다 LAN과 WAN LAN은 local area network로 가정이나 사무실 같이 지리적으로 가까운 곳에서 연결할..

네트워크 2022.08.07

[백준 python] 14501번 퇴사

문제링크 문제 설명 N+1일째 퇴사를 하기로 하고 N일까지 상담을 할 수 있을 때 최대로 받을 수 있는 수익을 계산하는 문제 매일 다른 상담을 선택할 수 있지만 상담에 소요되는 시간과 상담 비용은 모두 다르다 고민한 부분 단순히 loop를 순회하며 풀이할 수 있을 것이라고 생각했지만 해결하지 못해 다른 분들의 풀이를 공부했다. dynamic programming이라는 방법으로 풀 수 있었는데 dynamic programming은 프로그램 중간에 계산된 결과를 다른 공간에 저장해두고 이후에 참조해 사용하는 방식이다 Lesson learned dynamic programming이라는 개념을 알고는 있었지만 관련된 문제를 해결해 본 적은 없었다. 이번 문제는 다른 분들의 풀이를 보고 이해했지만 비슷한 문제가 ..

[백준 python] 14889번 스타트와 링크

문제 링크 14889번: 스타트와 링크 예제 2의 경우에 1,3,6, 2,4,5로 팀을 나누면 되고, 예제 3의 경우에는 1,2,4,5, 3,6,7,8로 팀을 나누면 된다. www.acmicpc.net 문제 설명 짝수 N명의 사람들을 두개의 팀으로 나누어 각 팀의 능력치를 계산해 비교해 차이가 최소인 팀 구성을 구하는 문제 팀이 구성되면 구성원 끼리 순서가 없기 때문에 조합을 찾는 문제로 생각해 풀 수 있음 고민한 부분 python의 내장 라이브러리인 itertools의 combinations함수를 사용할 수 있을지 확인해보고 싶었다 백트래킹 문제가 조금 까다롭게 나오는 경우 중간에 탐색할 필요 없는 조건을 찾아 가지치기를 해주어야 하는데 이 문제에서는 가지치기 할 필요 ..

[백준 python] 14891번 톱니바퀴

문제링크 14891번: 톱니바퀴 총 8개의 톱니를 가지고 있는 톱니바퀴 4개가 아래 그림과 같이 일렬로 놓여져 있다. 또, 톱니는 N극 또는 S극 중 하나를 나타내고 있다. 톱니바퀴에는 번호가 매겨져 있는데, 가장 왼쪽 톱니바퀴 www.acmicpc.net 문제 설명 직렬로 연결 된 4개의 톱니 바퀴 중 하나를 골라 돌리는 작업을 K번 반복했을 때 톱니의 상태를 찾는 문제 각 톱니는 자석처럼 S와 N로 구분되는데, 처음 상태에서 다른 극끼리 맞닿은 경우 회전이 전파된다 고민한 부분 회전하는 톱니를 구현할 방법을 고민했는데, list로 만들 수 있지만 파이썬 내장 함수인 deque를 사용하면 rotate 메소드로 쉽게 구현할 수 있다 그 외 어려운 부분은 없었지만, 문제를 꼼꼼하게 읽지 않아 회전한 후에 ..

[백준 python] 14502번 연구소

문제 링크 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크 www.acmicpc.net 문제 설명 빈 공간, 벽, 바이러스로 구성된 2차원 array를 입력받아 빈 공간 세 곳에 벽을 세운 후 바이러스가 퍼질 수 없는 영역의 수를 세는 문제 구현해야 하는 내용은 빈 공간에 1)세 개의 벽을 세우는 것, 2)바이러스가 퍼질 수 있는 영역을 BFS로 탐색하는 것, 3)감염되지 않은 영역을 세는 것 고민한 부분 아직 순열이나 조합을 응용하는 문제에 익숙하지 않아 긴 시간동안 고민을 했음 재귀 방식으로 3개의 블럭을 쌓은 후 BFS..

[백준 python] 14503번 로봇 청소기

문제 링크 14503번: 로봇 청소기 로봇 청소기가 주어졌을 때, 청소하는 영역의 개수를 구하는 프로그램을 작성하시오. 로봇 청소기가 있는 장소는 N×M 크기의 직사각형으로 나타낼 수 있으며, 1×1크기의 정사각형 칸으로 나누어 www.acmicpc.net 문제 설명 벽1과 빈 공간0으로 이뤄진 2차원 array를 입력으로 받고 주어진 규칙에 따라 빈 영역을 탐색하는 문제 고민한 부분 구현 할 때 청소를 마친 부분을 하나의 숫자로 채울 경우 디버깅 과정에서 청소 순서를 파악하기 어려웠음 line 24에서 clean_tag를 2로 선언하고 청소를 할 때마다 1씩 증가시켜 청소되는 순서를 파악할 수 있게 구현 청소기가 회전하는 방향을 잘못 파악한 것을 늦게 알아채 오래 걸렸던 문제

[백준 python] 14888번 연산자 끼워넣기

문제 링크 14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N2N11가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. 1Ai100 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈+의 개수, 뺄셈의 개수, www.acmicpc.net 문제 설명 순서가 있는 N개의 숫자를 받고 그 숫자 사이에 N-1개의 연산자를 삽입하는 문제 중복을 허용하고, 4종류의 연산자로 이루어진 N-1 길이의 순열을 모두 탐색하는 방법으로 접근 고민 한 부분 DFS 방식으로 탐색을 하며 이미 탐색한 순열은 다시 탐색하지 않도록 가지치기할 방법 line39 더보기 N-1 x 4 크기의 visited 배열을 활용해 depth 번째에 삽입 될 연산자가 이..