[백준] 2133번: 타일 채우기 C++ 풀이
·
코딩테스트/백준(BOJ)
문제문제 분류다이나믹 프로그래밍(동적 프로그래밍)📌 풀이 방법먼저 N이 2로 나누어지지 않는 경우는 타일을 완벽하게 채울 수 없습니다.N을 천천히 늘려가며 칸수를 채우는 방식을 계산해보겠습니다. N=2, 방법 3가지는 아래와 같습니다.위 3가지 외에는 방법이 없으므로 dp[2] = 3입니다. N=4인 경우dp[2]: 2칸을 채우는 경우(3)dp[4] = dp[2] * dp[2] 로 나타낼 수 있습니다. N=6인 경우먼저, dp[4] * dp[2] 를 더합니다.이는 4칸의 블럭을 채우는 방법 * 2칸의 블럭을 채우는 방법입니다. 이후, 2칸을 먼저 채운 후 4칸을 채우는 방식인데, 이때 4칸을 채울 경우를 dp[4]로 계산하지 않고 '2' 로 계산합니다.이유는 dp[4]로 계산할 시 위에서 dp[4] *..
[백준] 13144번: List of Unique Numbers C++ 풀이
·
코딩테스트/백준(BOJ)
문제문제 분류투 포인터📌 풀이 방법먼저, 예제 2번을 보면 5개의 숫자가 1, 2, 3, 1, 2 로 배열을 이루고 있습니다.이 경우에서 연속한 배열을 뽑았을 때 중복이 없는 경우는 아래와 같습니다.1, 12, 1232, 23, 2313, 31, 3121, 122 위와 같은 구성으로 이루어지며 이 경우를 보면 시작하는 수(start)로 부터 중복되는 수(end)가 등장하는 순간까지의 경우를 모두 더하면 됩니다.즉, 각 start마다 end - start 만큼의 경우가 존재한다는 의미입니다.그러니 우리는 start 인덱스를 0부터 N-1까지 진행하면서 중복되는 수가 있는지 확인하면 됩니다.0부터 N-1 인덱스를 순차적 탐색한다.각 인덱스를 탐색하는 중간에 중복되는 수를 확인한다.중복되는 수가 없다면 en..
19236번 백준: 청소년 상어 C++
·
코딩테스트/백준(BOJ)
문제 정보https://www.acmicpc.net/problem/19236 삼성SW역량 문제 중 하나로 구현, 시뮬레이션, 백트래킹 문제입니다. 백트래킹의 개념을 알고 있다면 구현만 잘하면 됩니다.카카오 공채 코테를 본 후 시뮬레이션 문제를 빠르게 풀기 위해 이 문제를 풀었는데 디버깅까지 2시간이 걸렸습니다. 해결 방법저는 구현, 시뮬레이션이 복잡한 문제를 해결할 때 최대한 여러 함수로 나누어서 해결하려고 노력합니다. 위에 문제를 예시로 들면- 상어, 물고기 구조체를 공통으로 저장하는 SeaLife 라는 구조체 생성- 물고기 간 위치 변경 함수(Exchange) : 지금 보니 Swap이 더 어울리는 표현이네요.- 물고기가 움직이는 함수- 상어가 물고기를 먹는 함수 물론 실제 서비스나 게임 등에 적용해..
C#의 데이터 형식
·
CS/이것이 C#이다
값 형식(Value Type): 값 형식은 변수가 값을 담는 데이터 형식-> 스택 메모리 영역에 저장된다.스택 메모리 영역은 코드 블록을 닫는 중괄호 }를 만나면 변수들이 메모리에서 제거됩니다.참조 형식(Reference Type): 참조 형식은 변수가 값 대신 값이 있는 곳의 위치(참조)를 담는 데이터 형식-> 힙 메모리 영역에 저장된다.저장된 메모리를 스스로 제거하지 않는다CLR의 가비지 컬렉터(Garbage Collector)가 힙에 더 이상 사용하지 않는 객체가 있으면 쓰레기로 간주하고 수거하는 기능을 한다.그렇다면 힙 메모리는 왜 사용하나?스택에 쌓인 데이터는 코드 블록이 사라지는 시점에 함께 제거된다.그래서 언제든 살려둘 수 있는 메모리 영역을 CLR이 제공한다.참조 형식의 변수는 힙, 스택 ..
C# 기본, .NET 간의 관계
·
CS/이것이 C#이다
.NET 클래스 라이브러리콘솔, 데스크톱, 웹, 모바일 등에서 동작하는 애플리케이션을 손쉽게 개발할 수 있는 API를 제공C#.NET에 최적화된 언어로 .NET 클래스 라이브러리를 사용해 손쉽게 프로그래밍을 할 수 있게 하는 언어.C#의 기본using이란?using은 C#의 키워드(keyword) 중 하나이다.using System;using static System.Console;Console.WriteLine("사용법: Hello.exe");//System.Console.WriteLine ...WriteLine("Hello {0|!, args[0]);위의 경우에 System이라는 namespace를 사용한다는 의미로 WriteLine 명령어의 코드를 줄일 수 있다.using static은 어떤 데이터..
[백준] 1202번 보석 도둑 C++ 풀이
·
코딩테스트/백준(BOJ)
https://www.acmicpc.net/problem/1202문제 흔한 배낭 문제로 생각했는데, 아이디어를 은근히 생각해내야 했습니다. 저의 아이디어는 다음과 같습니다. 1. 가방은 무게 순으로 정렬(오름차순) 2. 보석은 무게 순으로 정렬(오름차순) -> 무게 같으면 가격 큰 것 순서(내림차순)- 2번 아이디어를 위해 저는 Jewelry라는 자료구조를 하나 생성했습니다. 3. 작은 가방부터 꺼내서 해당 가방에 들어갈 수 있는 보석의 가격을 우선순위 큐 pq에 넣는다. 4. pq에 있는 것 중 가장 큰 값(pq.top())을 결과 값에 저장하고 pq.pop()을 한다.-> 크기가 작은 가방에 들어갈 수 있는 보석들부터 검사하기 때문에 해당 가방에 들어갈 수 있는 가장 가격이 높은 보석이 자동으로 저장..
CuriHuS
CuriHuS Blog