백준 온라인 저지의 1780번 종이의 개수 문제입니다. [링크] https://www.acmicpc.net/problem/1780 문제 조건과 설명 N×N크기의 행렬로 표현되는 종이가 있다. 종이의 각 칸에는 -1, 0, 1의 세 값 중 하나가 저장되어 있다. 우리는 이 행렬을 적절한 크기로 자르려고 하는데, 이때 다음의 규칙에 따라 자르...
[2018 KAKAO BLIND RECRUITMENT] [1차] 비밀지도
[2018 KAKAO BLIND RECRUITMENT] 비밀지도 2018 KAKAO BLIND RECRUITMENT 비밀지도 문제입니다. https://programmers.co.kr/learn/courses/30/lessons/17681 문제 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀...
[2018 KAKAO BLIND RECRUITMENT] [1차] 캐시
[2018 KAKAO BLIND RECRUITMENT] 캐시 2018 KAKAO BLIND RECRUITMENT 캐시 문제입니다. https://programmers.co.kr/learn/courses/30/lessons/17680 문제 지도개발팀에서 근무하는 제이지는 지도에서 도시 이름을 검색하면 해당 도시와 관련된 맛집 게시물들을 데...
알고리즘 - C++의 set 정렬 기준을 임의로 바꾸기 & 백준 단어정렬
C++의 set 정렬 기준을 임의로 바꾸기 기본적으로 C++의 STL 중 set 은 원소를 넣을 때마다 자동적으로 오름차순 정렬되어 들어갑니다. 하지만 원소를 넣을 때 정렬되는 기준을 사용자 마음대로 바꾸고 싶을 경우가 생길 수 있습니다. 먼저, set의 템플릿을 살펴볼 필요가 있습니다. set이 정의된 소스 코드를 살펴 보겠습니다. ...
[React] 회원가입 폼 validation 디자인 구현하기
React - 회원가입 폼 validation 디자인 구현하기 목적 : 핸들러를 구현하여 회원가입 양식에 어긋나는 입력을 할 시, UI에서 텍스트 필드가 오류 색상으로 변경되는 효과를 구현합니다. 본 소스에는 Material-UI 를 사용하였습니다. 기능을 적용할 페이지의 함수 내부에 넣으면 됩니다. hasNo...
[알고리즘 트레이닝] 4장 - 정렬과 탐색 및 스케줄링(스윕라인, 이벤트, 데드라인)
정렬 알고리즘 실제 상황에서 정렬 알고리즘을 직접 구현할 필요가 있는 경우는 거의 없습니다. C++에서 잘 정의된 STL 라이브러리의 sort 를 활용할 수 있습니다. (헤더파일 algorithm) sort 함수는 C++11 표준에서 O(n log n)으로 동작해야 한다고 규정하고 있습니다. 정렬을 이용한 문제 풀이 ...
[알고리즘 트레이닝] 3장 - 알고리즘의 효율성 추정하기, 최대 부분 배열 합
알고리즘의 효율성 추정하기 주어진 문제의 입력 크기를 통해서 그 문제를 풀기에 적합한 알고리즘의 시간복잡도를 추정해볼 수 있습니다. 입력의 크기 추정한 상한 시간 복잡도 n <= 10 O(n!) n <...
[알고리즘 트레이닝] 2장 - 비트마스크, 집합 표현하기, 비트셋(bitset)
비트마스크 1 « k 는, k번째 위치에만 비트 1이 있고, 나머지 위치에는 비트 0이 있는 정수입니다. 그러므로 이 비트마스크를 사용하면 어떤 정수의 특정한 비트 하나에 접근할 수 있습니다. 예를 들어 x & (1 « k) 가 0이 아니라면, 정수 x 의 k번째 비트가 1이라는 의미입니다. 1 2 3 4 01001 &0100...
알고리즘 - 에라토스테네스의 체 : 소수(prime number)와 소인수분해
소수를 구하는 효율적인 알고리즘에는 에라토스테네스의 체라는 것이 있습니다. 소수는 약수가 자기 자신과 1만 있는 숫자를 말하는데, 이것은 단순한 반복문으로도 구할 수는 있습니다. 숫자 한 개에 대해서 그것이 소수인가? 판별할 때에는 반복문으로 구해도 아주 큰 문제는 없을 것입니다. 하지만 다량의 소수를 한꺼번에 판별해서 구해야 할 경우에는 이...
알고리즘 - 최대공약수와 최소공배수, 유클리드 호제법
알고리즘을 작성하다 보면 최대공약수나 최소공배수를 구해야 할 때가 있습니다. 최대공약수는 유클리드 호제법으로 정말 간편하게 구할 수 있습니다. 재귀함수로 작성하거나, 반복문으로 작성할 수 있습니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 int gcd(int a, int b){ if (b == 0) r...