Loading...

1부터 n까지 각각 1번씩 정확히 k개의 정수만 사용해서 합을 s로 만드는 그리디 알고리즘

19177번: Klothes (acmicpc.net) 1부터 n까지의 자연수 중에서 각각 1번씩만 사용하고, 정확히 k개의 정수만 사용해서 합을 s로 만드는 방법을 찾는 문제 n이 40000까지이고 테스트케이스가 8000개이다 보니 단순한 방법보다는 O(N)정도에 하나는 해결해야  만약 s가 가능한 범위를 벗어난다면 일단 만들수가 없다. s의 최솟값은 1부터 k까지 합 s의 최댓값은 n-k+1,n-k+2,...,n까지의 합 만약 s가 (1부터 k까지 합)   반대로 이 범위 안이라면 확실하게 만들 수 있다는 것이 보장된다. (1부터 k까지의 합) = a (n-k+1,...,n까지의 합) = b라고 할 때, a,a+1,a+2,..,b-1,b까지의 모든 정수는 반드시 만들 수 있다. 어떤 정수는 안되는게 있..

골드바흐의 추측을 이용해 정수 n을 k개의 소수 합으로 표현하기

25309번: K개의 소수 (acmicpc.net) 정수 n을 k개의 소수 합으로 표현하라는 문제 여기서 핵심은 서로 다른 k개의 소수가 아니라, 같은 소수를 사용해도 좋다. 그리고 문제는 n이 최대 $10^{8}$이고 k는 최대 10000이라 단순한 방법으로는 어렵다 먼저 생각할 수 있는 것은 가장 작은 소수가 2이기 때문에, 2를 k개 사용하여 2k가 만들 수 있는 정수의 최솟값이다. 따라서 n = 2k이면 일단 분해하는 것이 가능하다. n,k = map(int,input().split())if n   만약 k = 1이면 n 자체로 소수인지 아닌지 판단하면 된다.  $O(\sqrt{n})$에 소수 판단할 수 있다. def is_prime(n): for i in range(2,int(n**..

2024. 5. 23. 02:12

배열을 뒤집었을때 생기는 반전 수의 개수 구하기

25339번: 반전 수와 쿼리 (acmicpc.net)  반전 수는 i P[j]인 (i,j)의 개수를 말한다. 배열이 [3,2,1]이면 반전수는 (인덱스 말고) (3,2), (3,1), (2,1)로 3개가 있다. l번, r번을 서로 교환하는 쿼리 [l,r]의 배열을 서로 뒤집는 쿼리가 주어질 때, 매 쿼리마다 수열의 반전 수를 2로 나눈 나머지를 구하는 문제 ---------------------------------------------------------------------------------------------------------------------------------------------------------- 배열 길이와 쿼리 수가 엄청나다보니 단순한 방법으로는 시간초과 이 문제는..

2024. 5. 23. 02:01

Unity&C# 수집형 오브젝트 만들기1 - 오브젝트 회전시키기

hierarchy에서 cube를 만들고, 플레이어 물체와는 눈에띄게 위치나 rotation 등을 조정하고, 색깔을 바꿔서 만든다 rotation을 45 45 45로 해주면 큐브가 기울어져있음 rotation 값을 조정하면 큐브가 기울어지는 각도가 달라진다는 것을 알 수 있다     게임같은거 해보면 수집형 물체는 회전해서 눈에 띄도록 만든 경우가 있는데..회전시킬려면 어떻게 해야할까 Rotator라는 script를 만들고 pickup 오브젝트에 붙여준다 using System.Collections;using System.Collections.Generic;using UnityEngine;public class Rotator : MonoBehaviour{ // Update is called once ..

2024. 5. 22. 02:57

floating point와 fixed point 간단하게

1. floating point와 fixed point의 차이 fixed point는 부호(+ , - )와 정수부와 소수부로 나누어서 실수를 저장하는 것 만약 32bit인 경우 예를 들면 정수는 8비트 소수부는 23비트만 저장하겠다고 고정을 하고 실수를 저장함 정수를 표현하고자하는 비트 수를 늘린다면 더 큰 숫자를 표현할 수 있지만  그만큼 소수부 비트가 줄어들어서 정밀한 숫자를 표현하기 어렵다 반면 소수부 비트를 늘린다면 정밀한 숫자를 표현할 수는 있어도 큰 숫자를 표현하기는 어렵다  이런 문제를 해결하기 위해 floating point 방식이 등장했다 모든 실수를 부호(+,-)와 가수부와 지수부로 나누어 저장함   소수점을 옮긴다는 생각은 의미가 없는게  floating point는 12345를 $1..

2024. 5. 18. 02:34

Unity 물체가 벽과 충돌할 수 있는 이유는 collider의 is trigger

hierarchy에서 create empty로 gameobject 생성하고 Walls로 변경 또 3D object를 생성하고, West Wall로 변경 오른쪽의 inspector에서 transform 부분에 reset을 누르면 위치를 원점으로 옮길 수 있다    그리고 Walls에 종속시킨다.   scale을 조정해서 벽을 만들거니까 게임판의 크기에 맞춰본다    position 값을 조정해서 벽이 되도록 끝에 맞춰준다    materials를 만들어서 벽이 구분되도록 색도 바꿔주자     4방향으로 벽을 만들어야하는데, 위 과정을 3번 반복하면 되겠지만 이미 만든 West Wall을 duplicate하면 똑같은 크기의 벽을 만든다     복제한 벽의 position, rotation을 적절히 조절해서,..