HTML 삽입 미리보기할 수 없는 소스 문제 https://www.acmicpc.net/problem/16234 16234번: 인구 이동 N×N크기의 땅이 있고, 땅은 1×1개의 칸으로 나누어져 있다. 각각의 땅에는 나라가 하나씩 존재하며, r행 c열에 있는 나라에는 A[r][c]명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 모 www.acmicpc.net N×N크기의 땅이 있고, 땅은 1×1개의 칸으로 나누어져 있다. 각각의 땅에는 나라가 하나씩 존재하며, r행 c열에 있는 나라에는 A[r][c]명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 모든 나라는 1×1 크기이기 때문에, 모든 국경선은 정사각형 형태이다. 오늘부터 인구 이동이 시작되는 날이다. 인구 이동은 하루 동안 다음..
HTML 삽입 미리보기할 수 없는 소스 문제 https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 철수의 토마토 농장에서는 토마토를 보관하는 큰 창고를 가지고 있다. 토마토는 아래의 그림과 같이 격자 모양 상자의 칸에 하나씩 넣어서 창고에 보관한다. 창고에 보관되는 토마토들 중에는 잘 익은 것도 있지만, 아직 익지 않은 토마토들도 있을 수 있다. 보관 후 하루가 지나면, 익은 토마토들의 인접한 곳에 있는 익지 않은 토마토들은 익은 토..
HTML 삽입 미리보기할 수 없는 소스 마야 파이썬 스크립트를 활용한 간단한 실습을 진행해보았다. 일반적으로 쉘프에서 도형을 생성하여 직접 크기를 조정하고 위치를 이동시키는 방식이 아닌, 순수 파이썬 스크립트만을 활용하여 장난감 자동차를 만들어보자. from maya import cmds cmds.polyCube(name="bottom") cmds.setAttr("bottom.scale", 4, 1, 10) for i in range(1,5): cmds.polyCylinder(name="wheel_%d" %(i)) cmds.setAttr("wheel_{}.scale".format(i), 2,0.3,2) cmds.setAttr("wheel_{}.rotateZ".format(i), 90) cmds.setAt..
개발하다보면 '싱글톤'이라는 디자인 패턴을 자주 접하게 되는데, 그때마다 대충 구글링해서 이런거구나~ 하고 넘기다보니 기억에서 자주 삭제되는 바람에..;; 마음먹은 김에 정리해두려고 한다. Singleton 패턴이란 🌟 프로세스가 실행 중에 오직 하나의 오브젝트만 생성되도록 강제하는 디자인 패턴 즉, 싱글톤 디자인 패턴을 가진 클래스를 사용해서 여러 개의 오브젝트를 만들더라도, 모두 단 하나의 오브젝트만 가리키도록 만드는 것이다. 언제 사용하나? 하나의 오브젝트가 리소스를 많이 차지할 때 하나의 오브젝트가 외부 네트워크와 연결되는데, 이 네트워크는 하나만 존재해야 할 때 등등 예시 1. 싱글톤 적용 X class Cat { constructor(name) { this.name = name; } speak..
HTML 삽입 미리보기할 수 없는 소스 리액트 라우터를 사용하기에 앞서 페이지 구성 방식(MPA, SPA)와 렌더링 방식(CSR, SSR, SSG)에 대해 알아보자 1. MPA와 SPA MPA(Multiple Page Application) MPA는 여러 개의 페이지를 준비한 후 요청에 따라 적절한 페이지를 반환하는 어플리케이션을 말한다. 특징 새로운 페이지를 요청할 때마다 서버에서 렌더링된 정적 리소스(html, css, js)를 다운로드한다. 페이지를 이동하거나 새로고침하면 전체 페이지를 리렌더링한다. 장점 페이지마다 키워드가 노출되어 있어서 검색이 쉽다. 단점 페이지를 이동할 때마다 전체 페이지가 리렌더링되기 때문에 느리다. 클라이언트와 서버 모두 렌더링 프레임워크를 사용해야 한다. SPA(Sing..
compareTo 두 값을 비교하여 int 값으로 반환해주는 함수로 문자열이나 숫자끼리 비교할 수 있다. int compareTo(NumberSubClass referenceName) int compareTo(String anotherString) 숫자 (기준 값 - 비교대상 값)을 반환한다고 생각하면 쉽다. 기준이 비교대상보다 크면 1, 작으면 -1, 동일하면 0을 반환한다. public class Main{ public static void main(String[] args){ Integer x = 3; Integer y = 4; Double z = 1.0; System.out.println(x.compareTo(y)); // -1 System.out.println(x.compareTo(2)); //..
LSB 본격적인 Binary Indexed Tree를 설명하기에 앞서 LSB(k)에 대해 간단히 알아보자. (나중에 쓰이는 연산임!) 어떤 수 k를 2진수로 바꿨을 때 가장 첫 번째로 1이 등장하는 위치를 d라 하자. LSB(k) = 2^d 를 말한다. 아래의 예시를 보면 이해에 도움이 될 것이다. LSB(10) 10 = 1010(2진수) 가장 첫 번째로 1이 등장하는 위치 d = 1 (오른쪽부터 0으로 카운트 시작) LSB(10) = 2^1 = 2 LSB(12) 12 = 1100 d = 2 LSB(12) = 2^2 = 4 LSB(8) 8 = 1000 d = 3 LSB(8) = 2^3 = 8 LSB 빠르게 구하기 실제 코드에서 LSB(k)를 상수시간 내 계산하는 방법은 -k(2의 보수)를 활용하는 것이다..
파이썬에서 기본으로 제공해 주는 내부 자료구조인 dict가 어떻게 구현되었는지 간단하게 알아보자 * 구체적인 구현은 파이썬 인터프리터, 버전마다 달라질 수 있다. 해시테이블 동작방식 파이썬에서 dict는 해시테이블로 이루어져있다. * 해시테이블에 대해서 잘 모른다면 여기를 참고하는 걸 추천한다. 기본적으로 해시테이블을 구현하고 동작하는 데 필요한 3가지 요소가 있다. hash function 어떤 함수를 이용해서 key 값을 slot 에 분배할 것인가? collision resolution method(충돌 해결 방식) 서로 다른 두 key가 같은 hash(key) 값을 가질 때 발생하는 collision을 어떻게 해결할 것인가? 크게 open addressing 방식과 chaining 방식으로 나눌 수..
for 문과 마찬가지로 파이썬에서 while 문에 else 절이 붙을 수 있다. while 조건문 : 실행문1 else : 실행문2 while 조건문이 거짓이라 실행문1이 수행되지 않을 때, else 절의 실행문2가 수행된다. 여기서 break 문에 의해 while 문을 탈출하게 된다면, else절은 수행되지 않는다. 예시 백준 #2839 설탕배달 https://www.acmicpc.net/problem/2839 2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그 www.acmicpc.net 문제와 풀이는 생략하고 정답 코드를 공개하면 다음과 같다. ..
파이썬으로 사용자의 입력을 받는 방법 - input(), sys.stdin.readline() 및 입력의 공백 처리하는 방법 - split(), strip()에 대해 알아보자. *이 글은 매번 헷갈려서 구글링하는 블로그 주인을 위해 작성되었습니다. 정확하지 않은 정보가 있다면 댓글로 알려주시면 감사하겠습니다. 사용자 입력받기 파이썬에서 사용자의 입력을 받는 방법은 크게 두 가지가 있다. # 방법1. sys.stdin.readline() 사용 import sys n1 = sys.stdin.readline() # 방법2. input() 사용 n2 = input() 두 방식 모두 사용자의 입력을 '문자열'로 받으며, 여기서 기억해야 할 것은 방법1. sys.stdin.readline()이 더 빠르다는 것. 사..