[백준] | C++ | 1086. 박성원 (Bit DP, 나머지 연산)
·
알고리즘/C++
개요요즘은 알고리즘 풀이가 스트레스 풀이에 제격입니다.뭔가 스트레스 풀이 수단으로 게임을 하면 시간을 낭비하는 것 같은데 알고리즘을 풀면 시간 낭비를 하는 것 같지 않아서 기분이 좋아요. 근데 모순되게도 이 문제는 풀면서 스트레스를 이만치 받았습니다. 문제박성원은 이 문제를 풀지 못했다. 서로 다른 정수로 이루어진 집합이 있다. 이 집합의 순열을 합치면 큰 정수 하나를 만들 수 있다. 예를 들어, {5221,40,1,58,9}로 5221401589를 만들 수 있다. 합친수가 정수 K로 나누어 떨어지는 순열을 구하는 프로그램을 작성하시오. 하지만, 박성원은 이 문제를 풀지 못했다. 따라서 박성원은 그냥 랜덤하게 순열 하나를 정답이라고 출력하려고 한다. 이 문제에는 정답이 여러 개 있을 수도 있고, 박..
[백준] | C++ | 1557. 제곱 ㄴㄴ (포함-배제의 원리)
·
알고리즘/C++
개요오늘의 문제는 1016.제곱 ㄴㄴ 수를 푼 겸 원리 자체가 비슷해보이는 1557.제곱 ㄴㄴ 입니다.공교롭게도 문제 번호가 참 낯이 익습니다. 참고로 전 이 문제를 풀고 플레티넘을 찍었습니다. 문제어떤수 N이 1이 아닌 제곱수로 나누어지지 않을 때, 이 수를 제곱ㄴㄴ수라고 한다. 제곱수는 4, 9, 16, 25와 같은 것이고, 제곱ㄴㄴ수는 1, 2, 3, 5, 6, 7, 10, 11, 13, ...과 같은 수이다.K가 주어졌을 때, K번째 제곱ㄴㄴ수를 구하는 프로그램을 작성하시오. 입력첫째 줄에 K가 주어진다. \((1 ≤ K ≤ 1,000,000,000)\) 출력첫째 줄에 K번째 제곱ㄴㄴ수를 출력한다. 테스트 케이스입력출력1319 풀이아이디어 정리제곱 ㄴㄴ 수 = 제곱인수가 없는 정수 =..
[백준] | C++ | 10942. 펠린드롬? (Top-down DP)
·
알고리즘/C++
개요골드 1을 달성했습니다. 그런 의미에서 이번에 푼 문제는 클래스 5의 문제인 10942. 펠린드롬? 입니다.무슨 상관이냐구요? 클래스 5를 달면 플레를 더 빨리 갈 수 있거든요. 문제명우는 홍준이와 함께 팰린드롬 놀이를 해보려고 한다. 먼저, 홍준이는 자연수 N개를 칠판에 적는다. 그 다음, 명우에게 질문을 총 M번 한다. 각 질문은 두 정수 S와 E(1 ≤ S ≤ E ≤ N)로 나타낼 수 있으며, S번째 수부터 E번째 까지 수가 팰린드롬을 이루는지를 물어보며, 명우는 각 질문에 대해 팰린드롬이다 또는 아니다를 말해야 한다. 예를 들어, 홍준이가 칠판에 적은 수가 1, 2, 1, 3, 1, 2, 1라고 하자.S = 1, E = 3인 경우 1, 2, 1은 팰린드롬이다.S = 2, E = 5인 경우..
[백준] | C++ | 4991. 로봇 청소기 (TSP, 비트마스킹)
·
알고리즘/C++
개요비트필드를 이용한 DP를 최근 재밌게 풀고 있어서 잡았던 문제입니다.BFS와 TSP를 잘 조합하면 풀립니다. 먼지의 개수가 최대 10개기 때문에 순열 탐색에 시간 복잡도가 \(O(n!)\)인 브루트포스로도 가능합니다.10!은 300만 언저리로 버티기 쉽기 때문이죠. 근데 전 마침 외판원 순회 문제를 풀어본 김에 다르게 풀었습니다. 문제오늘은 직사각형 모양의 방을 로봇 청소기를 이용해 청소하려고 한다. 이 로봇 청소기는 유저가 직접 경로를 설정할 수 있다. 방은 크기가 1×1인 정사각형 칸으로 나누어져 있으며, 로봇 청소기의 크기도 1×1이다. 칸은 깨끗한 칸과 더러운 칸으로 나누어져 있으며, 로봇 청소기는 더러운 칸을 방문해서 깨끗한 칸으로 바꿀 수 있다. 일부 칸에는 가구가 놓여져 있고, 가구..
[FRACTiLE] | 정적 클래스 기반 Input System과 InputBindingComposite
·
개발/FRACTiLE
개요'격 자'의 리메이크 프로젝트.'FRACTiLE' 입니다. 기존에 사용하던 New Input System과 SO를 결합하는 대신 정적 클래스로 구조를 새로 다듬어볼겁니다. 아이디어 정리일단 기존에 사용하던 SO 기반 Input System은 이 글에서 보실 수 있습니다.별로 보지 않는걸 추천합니다. 예전 글이라 그런지 말투가 정돈이 안돼있네요. 간단하게 설명하자면 Player Input 컴포넌트를 사용하는 대신 Generate C# Class 옵션을 통해 클래스로 입력을 받고 그 입력을 SO를 통해 호스팅 하는 그러한 구조입니다. 에셋을 통해 관리하고 의존성이 낮다는 장점이 있습니다. 또 인스턴스가 1개 이상일 수 있어서 둘 이상의 플레이어를 관리하기 좋을 수도 있습니다. 이건 안해봐서 잘 모르..
FRACTiLE
·
개발/FRACTiLE
[백준] | C++ | 7453. 합이 0인 네 정수
·
알고리즘/C++
개요solved.ac 클래스 5 문제 탐색 도중 제목이 제일 만만해 보여서 고른 문제입니다.7453. 합이 0인 네 정수. 딱 봤을때 이분 탐색, 두 포인터 느낌이 나길래 골랐습니다. 용액 문제를 풀었을때 상당히 쉬웠거든요.     문제정수로 이루어진 크기가 같은 배열 A, B, C, D가 있다. A[a], B[b], C[c], D[d]의 합이 0인 (a, b, c, d) 쌍의 개수를 구하는 프로그램을 작성하시오. 입력첫째 줄에 배열의 크기 n (1 ≤ n ≤ 4000)이 주어진다. 다음 n개 줄에는 A, B, C, D에 포함되는 정수가 공백으로 구분되어져서 주어진다. 배열에 들어있는 정수의 절댓값은 최대 228이다. 출력합이 0이 되는 쌍의 개수를 출력한다. 테스트 케이스입력출력6 -45 22 42 -..
[백준] | C++ | 17626. Four Squares
·
알고리즘/C++
개요졸업 작품을 PlayX4에 골인 시킨 후에 저는 자소서를 마무리 하고 코테를 준비중입니다.그 시작점이 됐던 문제는 17626. Four Squares죠.    문제라그랑주는 1770년에 모든 자연수는 넷 혹은 그 이하의 제곱수의 합으로 표현할 수 있다고 증명하였다. 어떤 자연수는 복수의 방법으로 표현된다. 예를 들면, 26은 52과 12의 합이다; 또한 42 + 32 + 12으로 표현할 수도 있다. 역사적으로 암산의 명수들에게 공통적으로 주어지는 문제가 바로 자연수를 넷 혹은 그 이하의 제곱수 합으로 나타내라는 것이었다. 1900년대 초반에 한 암산가가 15663 = 1252 + 62 + 12 + 12라는 해를 구하는데 8초가 걸렸다는 보고가 있다. 좀 더 어려운 문제에 대해서는 56초가 걸렸다: 1..