링크 : https://www.acmicpc.net/problem/10926 10926번: ??! 준하는 사이트에 회원가입을 하다가 joonas라는 아이디가 이미 존재하는 것을 보고 놀랐다. 준하는 놀람을 ??!로 표현한다. 준하가 가입하려고 하는 사이트에 이미 존재하는 아이디가 주어졌을 때 www.acmicpc.net 문제 문제 풀이 어째서 ??!을 이어서 출력하면 되는 간단한 문제가 있지? 라고 생각할 수도 있지만 C++17 이전 버전에서는 '삼중자'라는 개념이 있어 ??!이 그대로 출력되지 않는다. 물론 string 클래스를 이용하면 바로 해결된다. 자세한 설명은 아래 링크를 참고하면 좋을 것 같다. 잘 설명해주셨다. https://st-lab.tistory.com/289 [백준] 10926번 : ..
링크 : https://www.acmicpc.net/problem/10869 10869번: 사칙연산 두 자연수 A와 B가 주어진다. 이때, A+B, A-B, A*B, A/B(몫), A%B(나머지)를 출력하는 프로그램을 작성하시오. www.acmicpc.net 문제 문제 풀이 앞선 문제들 A + B, A - B, A x B, A / B를 모두 활용하는 문제다. 코드 전문 C++ HTML 삽입 미리보기할 수 없는 소스 Python HTML 삽입 미리보기할 수 없는 소스 소감 파이썬에서 // 연산자를 활용해야 하는 것이 주의할 점이었다.
링크 : https://www.acmicpc.net/problem/1008 1008번: A/B 두 정수 A와 B를 입력받은 다음, A/B를 출력하는 프로그램을 작성하시오. www.acmicpc.net 문제 문제 풀이 정답과 출력값의 절대오차 또는 상대오차가 10^-9 이하라는 조건 때문에 생각해 볼 여지가 있는 문제다. "10-9 이하의 오차를 허용한다는 말은 꼭 소수 9번째 자리까지만 출력하라는 뜻이 아니다." 이 문구가 왜 있는 것일까? 우선 float와 double형을 이해해야 한다. float형은 메모리 크기가 32bit이고, double형은 메모리 크기가 64bit이다. 이러한 크기 차이 때문에 표현가능한 소수점 이하 자리수가 float형은 6자리, double형은 15자리이다. 따라서 위 조건..
링크 : https://www.acmicpc.net/problem/10998 10998번: A×B 두 정수 A와 B를 입력받은 다음, A×B를 출력하는 프로그램을 작성하시오. www.acmicpc.net 문제 문제 풀이 간단한 연산 문제다. 파이썬을 사용하는 사람들은 아래 링크를 참고하면 좋을 것 같다. map(int, input().split())에 대한 설명을 써두었다. https://reo91004.tistory.com/198 [백준 / BOJ] 1000번 A+B (C++, Python) (부제 : map(int, input().split())에 대하여) 링크 : https://www.acmicpc.net/problem/1000 1000번: A+B 두 정수 A와 B를 입력받은 다음, A+B를 출력하..
링크 : https://www.acmicpc.net/problem/1001 1001번: A-B 두 정수 A와 B를 입력받은 다음, A-B를 출력하는 프로그램을 작성하시오. www.acmicpc.net 문제 문제 풀이 간단한 입출력 문제다. 파이썬을 사용하는 사람들은 아래 링크를 참고하면 좋을 것 같다. map(int, input().split())에 대한 설명을 써두었다. https://reo91004.tistory.com/198 [백준 / BOJ] 1000번 A+B (C++, Python) (부제 : map(int, input().split())에 대하여) 링크 : https://www.acmicpc.net/problem/1000 1000번: A+B 두 정수 A와 B를 입력받은 다음, A+B를 출력하는..
링크 : https://www.acmicpc.net/problem/1000 1000번: A+B 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. www.acmicpc.net 문제 문제 풀이 간단한 연산 문제다. C++ 상세 풀이 더보기 별로 특별하게 생각할 것 없이 두 수를 입력받은 후 더해주면 된다. #include void init() { std::ios_base::sync_with_stdio(false); std::cin.tie(nullptr); std::cout.tie(nullptr); } int main() { init(); int A, B; std::cin >> A >> B; std::cout
링크 : https://www.acmicpc.net/problem/10718 10718번: We love kriii ACM-ICPC 인터넷 예선, Regional, 그리고 World Finals까지 이미 2회씩 진출해버린 kriii는 미련을 버리지 못하고 왠지 모르게 올해에도 파주 World Finals 준비 캠프에 참여했다. 대회를 뜰 줄 모르는 지박 www.acmicpc.net 문제 문제 풀이 2557번 Hello World와 같은 간단한 입출력 문제다. C++ 상세 풀이 더보기 개행문자를 이용해 출력하면 된다. #include void init() { std::ios_base::sync_with_stdio(false); std::cin.tie(nullptr); std::cout.tie(nullptr..
링크 : https://www.acmicpc.net/problem/2557 2557번: Hello World Hello World!를 출력하시오. www.acmicpc.net 문제 문제 풀이 간단한 입출력 문제다. C++이나 JAVA같은 경우는 풀이 방법이 여러가지가 존재하지만 파이썬은 알아봐도 print을 쓰는 한 가지만 존재하는 것 같다. C++ 상세 풀이 더보기 C++에서는 입출력 방식이 여러 가지가 존재한다. 대표적으로 iostream, stdio.h, cstdio 헤더파일을 사용하는 방법이 존재한다. 메모리는 iostream이 가장 많이 차지한다. 그래서 후에 너무 많이 입출력을 받으면 기본적으로 stdio보다 느리다. 이를 해결하기 위해 C++ 표준 스트림과 C 표준 스트림의 동기화를 끊는 방..
링크 : https://www.acmicpc.net/problem/9184 9184번: 신나는 함수 실행 입력은 세 정수 a, b, c로 이루어져 있으며, 한 줄에 하나씩 주어진다. 입력의 마지막은 -1 -1 -1로 나타내며, 세 정수가 모두 -1인 경우는 입력의 마지막을 제외하면 없다. www.acmicpc.net 문제 문제 풀이 문제에 적혀있는 재귀함수 w(a, b, c)를 동적 계획법으로 옮기면 된다. 핵심 부분만 언급하자면 기저 사례인 1, w(20, 20, 20)을 리턴하는 코드 밑에 // C++의 경우 else if (dp[a][b][c] != 0) return dp[a][b][c]; # Python의 경우 elif dp[a][b][c] != 0: return dp[a][b][c] 해당 코드를..
링크 : https://www.acmicpc.net/problem/24416 24416번: 알고리즘 수업 - 피보나치 수 1 오늘도 서준이는 동적 프로그래밍 수업 조교를 하고 있다. 아빠가 수업한 내용을 학생들이 잘 이해했는지 문제를 통해서 확인해보자. 오늘은 n의 피보나치 수를 재귀호출과 동적 프로그래밍 www.acmicpc.net 문제 문제 풀이 fib(n) { if (n = 1 or n = 2) then return 1; # 코드1 else return (fib(n - 1) + fib(n - 2)); } 코드 1은 return 1이다. 그런데 잘 생각해보면 이 피보나치 함수는 1의 합으로 피보나치 수를 구하게 된다. 어차피 숫자는 1밖에 없기 때문에 바로 알아챌 수 있다. 그렇다면 코드 1은 n의 ..
링크 : https://www.acmicpc.net/problem/2580 2580번: 스도쿠 스도쿠는 18세기 스위스 수학자가 만든 '라틴 사각형'이랑 퍼즐에서 유래한 것으로 현재 많은 인기를 누리고 있다. 이 게임은 아래 그림과 같이 가로, 세로 각각 9개씩 총 81개의 작은 칸으로 이루 www.acmicpc.net 문제 문제 풀이 우선 스도쿠의 규칙에 따르면 체크해야 할 조건이 두 가지가 있다. 같은 행, 열에 같은 숫자가 존재하면 안된다. 속해있는 3x3 정사각형 안에 같은 숫자가 존재하면 안된다. C++ 상세 풀이 더보기 다양한 풀이가 있겠지만 나는 백트래킹 방법, 그 중에서도 9 x 9칸을 해결할 때까지 순회하는 방법을 사용했다. for (int i = 0; i < 9; ++i) for (in..
링크 : https://www.acmicpc.net/problem/14889 14889번: 스타트와 링크 예제 2의 경우에 (1, 3, 6), (2, 4, 5)로 팀을 나누면 되고, 예제 3의 경우에는 (1, 2, 4, 5), (3, 6, 7, 8)로 팀을 나누면 된다. www.acmicpc.net 문제 문제 풀이 백트래킹 문제이며, 우선 팀을 반으로 어떻게 나눌까? 하는 생각에서 출발하게 된다. C++ 상세 풀이 더보기 2차원 벡터에 행렬을 담아주었다. N이 4에서 20까지이므로 visited 배열을 크기 20으로 설정해 전역으로 선언해두었다. C++ 코드 void dfs(std::vector &v, int cur, int idx) { // cur이 N / 2와 같다면 한 팀에 총 인원의 반이 담겨졌다..