본문 바로가기

Algorithm

(2139)
(C++) - 백준(BOJ) 5671 : 호텔 방 번호 https://www.acmicpc.net/problem/5671 5671번: 호텔 방 번호 선영이는 집 호수에 반복되는 숫자가 있는 경우에는 그 집에 사는 사람에게 불운이 찾아온다고 믿는다. 따라서, 선영이는 838호나 1004호와 같이 한 숫자가 두 번 이상 들어있는 집에는 절대 살지 www.acmicpc.net 모든 경우의 수를 탐색하는 brute_force문제였습니다. 📕 풀이방법 📔 입력 및 초기화 n, m, ans를 선언한 후 EOF가 나올 때까지 n, m에 입력받습니다. 📔 풀이과정 1. n이상 m이하의 범위로 for loop를 수행하며 유효한 방 번호인지 확인해줍니다. 2. 유효여부는 isValid함수를 수행해 각 자리 수 vector cnt를 지역변수로 선언하여 모든 수가 2개 미만으로 ..
(Python) - 백준(BOJ) 13706 : 제곱근 https://www.acmicpc.net/problem/13706 13706번: 제곱근 첫째 줄에 양의 정수 N이 주어진다. 정수 N의 제곱근은 항상 정수이며, N의 길이는 800자리를 넘지 않는다. www.acmicpc.net 이분탐색 문제였습니다. 📕 풀이방법 📔 입력 및 초기화 n을 선언 후 입력받습니다. 📔 풀이과정 n이 800자리이므로 big int가 지원되는 언어가 구현하기 쉽습니다. math.sqrt함수로는 800자리의 n을 인자로 받을 수 없습니다. overflowerror를 출력하므로 틀리게 됩니다. 해당 issue는 하기 링크에 있습니다. https://stackoverflow.com/questions/28239978/python-sqrt-limit-for-very-large-numb..
(C) - 백준(BOJ) 25083번 : 새싹 https://www.acmicpc.net/problem/25083 25083번: 새싹 아래 예제와 같이 새싹을 출력하시오. www.acmicpc.net 📕 풀이방법 '\'나 "는 앞에 \를 붙여주면 출력가능합니다. 📔 정답출력 예제 출력 예시처럼 출력하면 됩니다. 📕 Code #include int main(){ printf(" ,r'\"7\n"); printf("r`-_ ,' ,/\n"); printf(" \\. \". L_r'\n"); printf(" `~\\/\n"); printf(" |\n"); printf(" |\n"); }
(C++) - 백준(BOJ) 1064 : 평행사변형 https://www.acmicpc.net/problem/1064 1064번: 평행사변형 평행사변형은 평행한 두 변을 가진 사각형이다. 세 개의 서로 다른 점이 주어진다. A(xA,yA), B(xB,yB), C(xC,yC) 이때, 적절히 점 D를 찾아서 네 점으로 평행사변형을 만들면 된다. 이때, D가 여러 개 나 www.acmicpc.net 점 사이의 거리, 기울기를 이용해 평행사변형 생성가능 여부를 결정하는 수학 문제였습니다. 📕 풀이방법 📔 입력 및 초기화 점의 x,y좌표를 저장하기 위해 struct Point를 선언 합니다. Point a,b,c점을 선언 후 선분 ab, bc, ac를 의미하는 변수 abLen, bcLen, acLen, 둘레의 길이를 저장할 변수 len1, len2, len3을 선..
(C++) - 백준(BOJ) 11536 : 줄 세우기 https://www.acmicpc.net/problem/11536 11536번: 줄 세우기 이름이 증가하는 순으로 나타나면 INCREASING, 감소하는 순이면 DECREASING을 한 줄에 출력한다. 만약 위의 두 경우가 아니라면 NEITHER를 출력한다. www.acmicpc.net 또 세우기 문제였습니다. 📕 풀이방법 📔 입력 및 초기화 이름 수 n, 증감소상태 stat, 이름 목록을 저장할 vector s를 선언 후 입력받습니다. 📔 풀이과정 s에 대해 for loop를 수행합니다. stat 이름목록의 상태를 나타냅니다. -1인 경우 내림차순이며, 0은 아무것도 아닌 상태, 1은 오름차순입니다. 크게 2경우로 나뉘며 각각 두 경우로 나누어 해결할 수 있습니다. 1. 이전 이름이 다음 이름보다 작..
(C++) - 백준(BOJ) 16173 : 점프왕 쩰리 (Small) https://www.acmicpc.net/problem/16173 16173번: 점프왕 쩰리 (Small) 쩰리는 맨 왼쪽 위의 칸에서 출발해 (행, 열)로 나타낸 좌표계로, (1, 1) -> (2, 1) -> (3, 1) -> (3, 3)으로 이동해 게임에서 승리할 수 있다. www.acmicpc.net 재귀를 활용한 brute force문제였습니다. 📕 풀이방법 📔 입력 및 초기화 구역크기 n, 구역정보 이차원 배열 board를 선언 후 입력받습니다. 📔 풀이과정 canWin함수를 수행합니다. 오른쪽 또는 아래쪽으로 갈 수 있다면 해당 칸으로 점프합니다. 도착할 수 있다면 1을 도착할 수 없다면 0을 반환합니다. 📔 정답출력 함수 결과값을 출력합니다. 📕 Code #include using name..
(Python) - 백준(BOJ) 10826 : 피보나치 수 4 https://www.acmicpc.net/problem/10826 10826번: 피보나치 수 4 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 www.acmicpc.net 대표 dp문제였습니다. 📕 풀이방법 📔 입력 및 초기화 항 n, fibonacci수열을 저장할 일차원 배열 fibo을 선언 후 n에 입력받습니다. 📔 풀이과정 점화식은 f[n] = f[n-1] + f[n-2] (n >= 2, f[0] = 0, f[1] = 1) 입니다. 두 가지 풀이가 있습니다. 1. for loop를 2이상 ~ n이하까지 수행해 각 항의 수..
(C++) - 백준(BOJ) 24218 : Double Crypt 1 https://www.acmicpc.net/problem/24218 24218번: Double Crypt 1 You are given ten problem instances in the text files named double1.in to double10.in. Each input file consists of three lines. The first line contains the integer $s$, the second line the plaintext block $p$, and the third line the ciphertext block $c_2$ www.acmicpc.net non sense한? 문제였습니다. 📕 풀이방법 📔 입력 및 초기화 double.in file의 내용만 input으로..