전체 글

전체 글

    [백준] 2869번 달팽이는 올라가고 싶다 C/C++ 풀이

    출처: https://www.acmicpc.net/problem/2869 풀이 먼저 달팽이가 올라가는 규칙을 찾아보도록 하자. 먼저 달팽이가 하루에 올라갈 수 있는 거리는 \(A-B\) 이다. 하지만, \(A-B\) 라고 생각해 \(N\)값을 계산하는건 큰 오류이다. 달팽이는 나무 막대를 모두 올라가면, 밤에는 미끄러지지 않는다. 즉, 달팽이가 미끄러지는 최대 지점을 찾아야한다. 최대 지점은 \(V-A\) 라고 계산할 수 있다. 달팽이가 나무 막대를 전부 올라가는데 걸리는 일수가 \(S\)이고, 최대 지점을 \(L\)이라고 가정하면 식은 다음과 같다. $ N=\frac{L}{A-B}+1 $ 하지만 이 수식에는 함정이 있다. 다음 예시를 보도록 하자. $ N=\frac{3}{4-2}+1 $ 이 수식대로라면..

    [백준] 1193번 분수 찾기 C/C++ 풀이

    출처: https://www.acmicpc.net/problem/1193 1193번: 분수찾기 첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다. www.acmicpc.net 풀이 먼저 모든 양의 유리수의 집합은 셀 수 있는 무한집합이다. 양의 유리수의 수열은 다음과 같이 나타낼 수 있다. $$ r_{1},r_{2},...,r_{n} $$ 또한, 다음 유리수들은 n/d의 형식으로 되어있고 다음과 같은 규칙을 찾을 수 있다. $$ n+d=2, \: n+d=3, \: n+d=4 \:\: ... \:\: n+d=cnt $$ 첫번째 for문에는 cnt의 값을 찾는 코드를 작성한다. 두번째 for문에서는 \(cnt\:\, mod\:\, 2 \) 의 값에 따른 분자와 분모의 값을 구하는 코드를 작성한다...

    [백준] 2292번 벌집 C/C++ 풀이

    출처: https://www.acmicpc.net/problem/2292 풀이 먼저 벌집의 규칙을 찾아보도록 하자. > n = 벌집의 개수 f(n) = 지나야 하는 방의 개수 if) n = 1 if) n = 6 f(n) = 1 f(n) = 2 if) n = 12 if) n = 18 f(n) = 3 f(n) = 4 벌집이 6개씩 추가로 늘어날 때마다 지나야 하는 방의 개수도 1개씩 늘어난다. $$ (단, \,n>1) $$ C/C++ 풀이

    [백준] 2193번 이친수 C/C++ 풀이

    출처: https://www.acmicpc.net/problem/2193 풀이 먼저 이친수를 계산하기 위한 경우의 수를 계산해보자. > n = 이친수의 자리수 f(n) = 자리수에 따른 이친수의 개수 if) n = 1 -> f(n) = 1 if) n = 2 -> f(n) = 1 1 10 if) n = 3 -> f(n) = 2 if) n = 4 -> f(n) = 3 101 1010 100 1000 1001 점화 관계 추론 1, 1, 2, 3... 식으로 수열이 늘어나고 있다. 이는 피보나치 수열의 관계와 같은 형식이라고 추측할 수 있다. $$ f_{n} = f_{n-2} + f_{n-1} \: (단,\, f_{1} = 1, f_{2} = 1) $$ C/C++ 풀이

    [KH Wargame] - Forensic05 풀이

    Forensic05 hint: 없음 먼저 HxD로 .vmdk 파일을 열어봅시다. 일단 MBR의 시작 섹터는 384번 입니다. 384번 섹터로 이동해 보겠습니다. 000301BE번이 0x00이라고 나와있습니다. 0x00 -> 0x80으로 바꾸고 부팅을 시도해봤습니다. 0x00 ( 부팅이 불가능한 파티션 ), 0x80 ( 부팅이 가능한 파티션 ) 검은 화면에서 부팅이 안되는걸 보니까 가상 머신을 부팅시키는 문제는 아닌가 봅니다. HxD로 .vmdk 파일을 열어 다음과 같이 문자열을 검색해봤습니다. 'flag' 50,224번 섹터에서 flag.png라는 문자열이 검색됐습니다. 위에 빨간 박스로 표시된 곳을 보면 0x50 0x4B 0x03 0x04로 .zip파일 헤더 시그니처가 나타나 있습니다. 0x50 0x4..

    [KH Wargame] - Forensic04 풀이

    Forensic04 hint: Booting the virtual machine. 먼저 HxD로 .vmdk 파일을 분석해봅시다. 0x80 0x0A이므로 2688번 섹터에 MBR이 위치해 있음을 알 수 있습니다. FixIt이라는 문자열로 MBR이 수정되어 있습니다. 혹시 모르니 FixIt이라는 문자열을 검색해서 또 따른 수정된 파티션이 있는지 확인 해보겠습니다. -> 확인해 본 결과 다른 파티션은 발견되지 않았습니다. 아마도 MBR만 복구하면 해결될 문제로 보입니다. MBR을 정상적인 Windows_XP_Professional MBR로 교체해주면 풀려보이네요. Forensic02에서 썼던 MBR구조를 그대로 복사해 수정된 MBR 부분에 그대로 붙여넣어줍니다. 이제 성공적으로 부팅이 되고 다음과 같이 Fla..

    [KH Wargame] - Forensic03 풀이

    Forensic03 hint: Find flag file. (user account: guest/guest) 전 포스팅을 보고 .vmdk 파일을 이용해 가상 머신을 부팅해봅시다. 부팅 후 id:guest pw:guest로 로그인을 하고 아무 명령어나 입력해봅시다. 전 ls를 입력했습니다. ?? 명령어가 제대로 작동하지 않습니다. 아마도 PATH 환경변수가 손상되어 보입니다. echo $PATH 명령어로 확인해봅시다. hahaha:/home/guest/bin을 export PATH=/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/home/guest/bin으로 수정해줍시다. 이제 명령어는 잘 동작하네요. flag 파일을 찾으라 했으니 다음 명령어로 flag 파일을 찾아보겠..

    [KH Wargame] - Forensic02 풀이

    Forensic02hint: Booting the virtual machine.먼저 다운로드한 .7z파일 압축을 해제해줍시다.압축을 풀면 .vmdk파일이 나옵니다. Forensic03, Forensic04문제를 풀기 위해서는 .vmdk파일을이용해 가상머신을 부팅하는 방법을 알아야하니 잘 숙지해 두시길 바랍니다. VMware을 실행해 다음과 같이 실행합니다. 이렇게 해주면 .iso파일이 들어가지 않은 빈껍데기 가상 머신이 만들어지게 됩니다.이렇게 만든 가상 머신을 실행시켜 줍니다. 다음과 같이 나타나는게 정상입니다.이제 해당 머신을 멈추고 가상 머신의 Default 경로인C:\Users\유저이름\Documents\Virtual Machines\Forensic02로 이동해줍니다. 원래 있던 .vmdk파일을 ..