[코딩테스트] [2239] 스도쿠
·
알고리즘/Recursion
스도쿠시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율2 초256 MB29907144371035845.706%문제스도쿠는 매우 간단한 숫자 퍼즐이다. 9×9 크기의 보드가 있을 때, 각 행과 각 열, 그리고 9개의 3×3 크기의 보드에 1부터 9까지의 숫자가 중복 없이 나타나도록 보드를 채우면 된다. 예를 들어 다음을 보자.위 그림은 참 잘도 스도쿠 퍼즐을 푼 경우이다. 각 행에 1부터 9까지의 숫자가 중복 없이 나오고, 각 열에 1부터 9까지의 숫자가 중복 없이 나오고, 각 3×3짜리 사각형(9개이며, 위에서 색깔로 표시되었다)에 1부터 9까지의 숫자가 중복 없이 나오기 때문이다.하다 만 스도쿠 퍼즐이 주어졌을 때, 마저 끝내는 프로그램을 작성하시오.입력9개의 줄에 9개의 숫자로 보드가 입력된다...
[코딩테스트] [9663] N - Queen
·
알고리즘/Recursion
시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율10 초128 MB137746669524296046.911%문제N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다.N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오.입력첫째 줄에 N이 주어진다. (1 ≤ N 출력첫째 줄에 퀸 N개를 서로 공격할 수 없게 놓는 경우의 수를 출력한다.문제풀이행렬에 퀸을 놓았을 때, 서로를 공격할 수 없는 상태가 되도록 배치하는 문제퀸이 놓여있는 좌표에 직선과 대각선이 만들어지는 구간에 아무것도 없어야 한다.1 ≤ N ≤ 15전체 경우의 수를 출력하자.문제 분석퀸은 하나의 행에 하나만 존재할 수 있다. (가로 세로 줄을 공격할 수 있기 때문)재귀함수 탐색..
[코딩테스트] [10597] 순열장난 & [2661] 좋은수열
·
알고리즘/Recursion
순열장난시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율1 초256 MB58831876137630.742%문제kriii는 1부터 N까지의 수로 이루어진 순열을 파일로 저장해 놓았다. 모든 수는 10진수로 이루어져 있고, 모두 공백으로 분리되어 있다.그런데 sujin이 그 파일의 모든 공백을 지워버렸다!kriii가 순열을 복구하도록 도와주자.입력첫 줄에 공백이 사라진 kriii의 수열이 주어진다.kriii의 순열은 최소 1개 최대 50개의 수로 이루어져 있다.출력복구된 수열을 출력한다. 공백을 잊으면 안 된다.복구한 수열의 경우가 여러 가지 일 경우, 그 중 하나를 출력한다.문제 풀이이 문제는 1부터 N까지수 로 이루어진 무작위 순열이다이때 공백이 모두 제거된 상태이고 중복되는 숫자가 없도록 순열을 ..
[코딩테스트] [17136] 색종이 붙이기
·
알고리즘/Recursion
색종이 붙이기시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율1 초512 MB3034712213696636.721%문제과 같이 정사각형 모양을 한 다섯 종류의 색종이가 있다. 색종이의 크기는 1×1, 2×2, 3×3, 4×4, 5×5로 총 다섯 종류가 있으며, 각 종류의 색종이는 5개씩 가지고 있다.색종이를 크기가 10×10인 종이 위에 붙이려고 한다. 종이는 1×1 크기의 칸으로 나누어져 있으며, 각각의 칸에는 0 또는 1이 적혀 있다. 1이 적힌 칸은 모두 색종이로 덮여져야 한다. 색종이를 붙일 때는 종이의 경계 밖으로 나가서는 안되고, 겹쳐도 안 된다. 또, 칸의 경계와 일치하게 붙여야 한다. 0이 적힌 칸에는 색종이가 있으면 안 된다.종이가 주어졌을 때, 1이 적힌 모든 칸을 붙이는데 필요한..
[Swift] WebView와 데이터 통신하는 두 가지 방법
·
Swift/정리
웹뷰와 데이터 통신 학습하게 된 이유Swift로 앱을 개발하면서 웹뷰(WKWebView)를 도입해야 하는 상황이 생겼고, 자연스럽게 네이티브 앱과 웹뷰 간의 데이터 통신 방법을 학습하게 되었다. 단순히 웹 콘텐츠를 앱 내에 띄우는 것에서 그치지 않고, 사용자 인증 정보, 세션, 사용자 식별자(uuid) 등 다양한 데이터를 웹뷰와 안전하게 주고받아야 하는 요구가 많아졌다.. 특히, 최근에는 앱 내에서 로그인한 사용자의 정보를 웹뷰로 전달하거나, 웹뷰에서 발생한 이벤트를 앱으로 다시 전달받아야 하는 복잡한 상호작용이 필요했습니다. 이런 요구를 해결하기 위해, Swift의 WKWebView가 제공하는 여러 데이터 통신 방식과 그 내부 동작 원리를 직접 실습하였음. 🍪 쿠키(Cookie) 설정을 통한 데이터..
[Flutter] Repository Pattern (with 인터페이스)
·
Flutter
Repository Pattern 학습학습하려는 이유현재 Flutter로 개발 중인 프로젝트 ‘풀밭’은 현재 Firebase의 Cloud Firestore를 활용해 클라이언트와 서버 간 데이터 송수신 및 저장을 담당하고 있다.위 이미지는 플러터 공식 문서에 있는 MVVM 아키텍처이고 아래는 풀밭의 아키텍처이다.[View] [ViewModel] [Repository] [Service (Firebase)]풀밭에서는 User, Notice, Recruit, Post, Campus 등 다양한 데이터베이스 컬렉션을 사용하며, 이에 따라 여러 개의 store를 다루는 코드가 구현되어 있다.하지만 만약 추후에 Firebase가 아닌 AWS, Supabase 등 다른 백엔드 서비스로 데이터 소스를 변경해야 하는 ..
[코딩테스트] [1987] 알파벳
·
알고리즘/Recursion
퇴각검색재귀를 이용해 모든 가능한 경우를 탐색하는 알고리즘일반적인 재귀랑 다른 점은?답을 찾는 도중에 최적해의 가능성이 없어지면 탐색을 중단가능성이 있는 경우 유망하다 라고 표현함최악의 경우 완전탐색이 되지만, 랜덤성이 있는 데이터에서는 평균적인 시간 소요가 낮아짐.예시알파벳시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율2 초256 MB142950443312680728.565%문제세로 R$R$칸, 가로 C$C$칸으로 된 표 모양의 보드가 있다. 보드의 각 칸에는 대문자 알파벳이 하나씩 적혀 있고, 좌측 상단 칸 (1$1$행 1$1$열) 에는 말이 놓여 있다.말은 상하좌우로 인접한 네 칸 중의 한 칸으로 이동할 수 있는데, 새로 이동한 칸에 적혀 있는 알파벳은 지금까지 지나온 모든 칸에 적혀 있는 ..
[코딩테스트] [16198] 에너지 모으기 & [2800] 괄호 제거 & [7490] 0 만들기
·
알고리즘/Recursion
[16198] 에너지 모으기 성공시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율1 초512 MB65974967402476.270%문제N개의 에너지 구슬이 일렬로 놓여져 있고, 에너지 구슬을 이용해서 에너지를 모으려고 한다.i번째 에너지 구슬의 무게는 Wi이고, 에너지를 모으는 방법은 다음과 같으며, 반복해서 사용할 수 있다.에너지 구슬 하나를 고른다. 고른 에너지 구슬의 번호를 x라고 한다. 단, 첫 번째와 마지막 에너지 구슬은 고를 수 없다.x번째 에너지 구슬을 제거한다.W × W의 에너지를 모을 수 있다.x+1x-1N을 1 감소시키고, 에너지 구슬을 1번부터 N번까지로 다시 번호를 매긴다. 번호는 첫 구슬이 1번, 다음 구슬이 2번, ... 과 같이 매겨야 한다.N과 에너지 구슬의 무게가 주어..
[코딩테스트] [2529] 부등호 & [9095] 1,2,3 더하기 & [12101] 1,2,3 더하기 2
·
알고리즘/Recursion
[2529] 부등호시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율1 초256 MB31504186331267758.215%문제두 종류의 부등호 기호 ‘’가 k개 나열된 순서열 A가 있다. 우리는 이 부등호 기호 앞뒤에 서로 다른 한 자릿수 숫자를 넣어서 모든 부등호 관계를 만족시키려고 한다. 예를 들어, 제시된 부등호 순서열 A가 다음과 같다고 하자.A ⇒ 부등호 기호 앞뒤에 넣을 수 있는 숫자는 0부터 9까지의 정수이며 선택된 숫자는 모두 달라야 한다. 아래는 부등호 순서열 A를 만족시키는 한 예이다.3 1 7 0이 상황에서 부등호 기호를 제거한 뒤, 숫자를 모두 붙이면 하나의 수를 만들 수 있는데 이 수를 주어진 부등호 관계를 만족시키는 정수라고 한다. 그런데 주어진 부등호 관계를 만족..
[코딩테스트] [1759] 암호 만들기 & [10971] 외판원 순회 2 & [14888] 연산자 끼워넣기
·
알고리즘/Recursion
[1759] 암호 만들기시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율2 초128 MB85939412702828044.931%문제바로 어제 최백준 조교가 방 열쇠를 주머니에 넣은 채 깜빡하고 서울로 가 버리는 황당한 상황에 직면한 조교들은, 702호에 새로운 보안 시스템을 설치하기로 하였다. 이 보안 시스템은 열쇠가 아닌 암호로 동작하게 되어 있는 시스템이다.암호는 서로 다른 L개의 알파벳 소문자들로 구성되며 최소 한 개의 모음(a, e, i, o, u)과 최소 두 개의 자음으로 구성되어 있다고 알려져 있다. 또한 정렬된 문자열을 선호하는 조교들의 성향으로 미루어 보아 암호를 이루는 알파벳이 암호에서 증가하는 순서로 배열되었을 것이라고 추측된다. 즉, abc는 가능성이 있는 암호이지만 bac는 그..
[Computer Science] [시스템 프로그래밍] 파일 다루기
·
Computer Science/System Programming
시스템 프로그래밍운영체제, 하드웨어와의 상호작용을 프로그래밍 하는 것커널이 제공하는 기능을 직접 제공받으며 low-level에서 동작하는 프로그램을 작성하는 것커널이 제공하는 기능: 시스템 콜 주로 활용운영체제, 네트워크 파트에서 학습한 내용을 소스코드 레벨에서 관측해보자.타 프로그래밍 언어를 이용하더라도 공통적으로 사용될 시스템 프로그래밍 개념파일 입출력프로세스간 통신소켓 프로그래밍파일 디스크립터프로세스는 운영체제로부터 파일을 할당받는다. 이걸 어떻게 구분할 수 있을까?파일을 식별하기 위해 운영체제로부터 할당 받은 정보입출력장치, 파이프, 소켓도 파일 디스크립터로 식별마치 위에 장치들을 파일로 다룬다.일반적으로 0이상의 정수 형태프로세스가 파일을 열거나 생성할 때 운영체제는 해당 파일에 대한 파일 디스..
[코딩테스트] [1182] 부분수열의 합 & [2758] 로또 & [1208] 부분 수열의 합2
·
알고리즘/Recursion
[1182] 부분수열의 합시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율2 초256 MB99180449482929243.323%문제N개의 정수로 이루어진 수열이 있을 때, 크기가 양수인 부분수열 중에서 그 수열의 원소를 다 더한 값이 S가 되는 경우의 수를 구하는 프로그램을 작성하시오.입력첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100,000을 넘지 않는다.출력첫째 줄에 합이 S가 되는 부분수열의 개수를 출력한다.문제 풀이이 알고리즘의 문제풀이는 수열이 있을때 크기가 양수인 부분수열중에서 그 수열의 원소가 더한 값이 S가 되는 경우의 수를 구하..
[코딩테스트] [14267] 회사 문화 1 & [1068] 트리 & [5639] 이진 검색 트리
·
알고리즘/Recursion
[14267] 회사 문화 1시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율2 초512 MB112084301323936.492%문제영선회사에는 매우 좋은 문화가 있는데, 바로 상사가 직속 부하를 칭찬하면 그 부하가 부하의 직속 부하를 연쇄적으로 칭찬하는 내리 칭찬이 있다. 즉, 상사가 한 직속 부하를 칭찬하면 그 부하의 모든 부하들이 칭찬을 받는다.모든 칭찬에는 칭찬의 정도를 의미하는 수치가 있는데, 이 수치 또한 부하들에게 똑같이 칭찬 받는다.직속 상사와 직속 부하관계에 대해 주어지고, 칭찬에 대한 정보가 주어질 때, 각자 얼마의 칭찬을 받았는지 출력하시오,입력첫째 줄에는 회사의 직원 수 n명, 최초의 칭찬의 횟수 m이 주어진다. 직원은 1번부터 n번까지 번호가 매겨져 있다. (2 ≤ n, m ≤..
[코딩테스트] [11725] 트리의 부모 찾기 & [1991] 트리 순회 & [15681] 트리와 쿼리
·
알고리즘/Recursion
트리계층적인 자료구조그래프의 일종사이클이 비순환적 구조이다.최상위 노드를 루트로가 한다.노드트리를 구성하는 각각의 요소루트트리의 최상위 노드부모 노드어떤 노드의 바로 위 노드자식 노드어떤 노드의 바로 아래 노드리프자식 노드가 없는 노드서브 트리트리내 특정노드를 루트로 하는 트리레벨Level 1으로 하였을 때, 각 노드의 깊이[11725] 트리의 부모 찾기시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율1 초256 MB99818454693188243.170%문제루트 없는 트리가 주어진다. 이때, 트리의 루트를 1이라고 정했을 때, 각 노드의 부모를 구하는 프로그램을 작성하시오.입력첫째 줄에 노드의 개수 N (2 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N-1개의 줄에 트리 상에서 연결된 두..
[코딩테스트] 재귀함수 & [15654~15657] N과M
·
알고리즘/Recursion
재귀함수자기 자신을 호출하는 함수를 재귀함수라고 한다.사용 이유하나의 커다란 문제를 작은 문제로 나누어 해결하기 위해서문제를 귀납적으로 생각하기 위해서귀납적 예시, {i}번째 답을 구하기 위해 (i-1), (i-2), … 번째 결과를 활용한다.예시숫자 출력오름차순과 내림차순을 재귀로 출력하는 방법을 봐 보자.아래 사진을 보면 재귀를 통하여 출력되는 것을 볼 수 있다.class Main { static class PrintNumber { public void asc (int n) { if (n==0) return; asc(n-1); System.out.println(n); } public void desc..