본문 바로가기

728x90

Python

[백준알고리즘] 9375번: 패션왕 신해빈 -Python [백준알고리즘] 9375번: 패션왕 신해빈 -Python https://www.acmicpc.net/problem/9375 9375번: 패션왕 신해빈 문제 해빈이는 패션에 매우 민감해서 한번 입었던 옷들의 조합을 절대 다시 입지 않는다. 예를 들어 오늘 해빈이가 안경, 코트, 상의, 신발을 입었다면, 다음날은 바지를 추가로 입거나 안경대신 렌즈를 착용하거나 해야한다. 해빈이가 가진 의상들이 주어졌을때 과연 해빈이는 알몸이 아닌 상태로 며칠동안 밖에 돌아다닐 수 있을까? 입력 첫째 줄에 테스트 케이스가 주어진다. 테스트 케이스는 최대 100이다. 각 테스트 케이스의 첫째 줄에는 해빈이가 가진 의상의 수 www.acmicpc.net 이 문제는 공식만 찾으면 바로 풀 수 있는 문제라고 생각한다. 처음에 무슨 .. 더보기
[HackCTF] RTL_Core write up c++문제들을 못 풀고.. Random Key는 맞게 푼 것 같은데 Nah.. 만 나올 뿐입니다 ㅠㅠㅠ 그냥 방황하다가 RTL_Core 문제를 풀었습니다.. 아직 초보에게는 갈길이 멀군요 ㅠㅠ RTL(Return to libc)는 RET주소에 공유 라이브러리의 함수 주소를 덮어써서 해당 함수를 호출하는 방법입니다. 더 자세한 내용들은 잘 설명된 사이트들의 링크로 올려두겠습니다! ...더보기 https://www.lazenca.net/display/TEC/02.RTL%28Return+to+Libc%29+-+x64 https://shayete.tistory.com/entry/4-Return-to-Library-RTL 일단 main을 까보자! gdb-peda$ pdisas main Dump of assembl.. 더보기
[백준알고리즘] 2981번: 검문 -Python [백준알고리즘] 2981번: 검문 -Python https://www.acmicpc.net/problem/2981 2981번: 검문 문제 트럭을 타고 이동하던 상근이는 경찰의 검문을 받게 되었다. 경찰은 상근이가 운반하던 화물을 하나하나 모두 확인할 것이기 때문에, 검문하는데 엄청나게 오랜 시간이 걸린다. 상근이는 시간을 때우기 위해서 수학 게임을 하기로 했다. 먼저 근처에 보이는 숫자 N개를 종이에 적는다. 그 다음, 종이에 적은 수를 M으로 나누었을 때, 나머지가 모두 같게 되는 M을 모두 찾으려고 한다. M은 1보다 커야 한다. N개의 수가 주어졌을 때, 가능한 M을 모두 찾는 www.acmicpc.net 이번 문제는 정답률이 21%인 난이도 높은 문제이다... 뭔가 감은 잡힌 것 같은데 식으로 만.. 더보기
[백준알고리즘] 2609번: 최대공약수와 최소공배수 -Python [백준알고리즘] 2609번: 최대공약수와 최소공배수 -Python https://www.acmicpc.net/problem/2609 2609번: 최대공약수와 최소공배수 첫째 줄에는 입력으로 주어진 두 수의 최대공약수를,둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다. www.acmicpc.net 최대공약수(GCD : Greatest Common Divisor)와 최소공배수(LCM : Least Common Multiple)를 구하는 문제다. 이 문제는 유클리드 호제법을 알고 있으면 쉽게 풀 수 있는 문제이다. 유클리드 호제법은 GCD를 쉽게 구할 수 있는 알고리즘 중의 하나이다. 이 알고리즘은 식을 간결하게 해주는 특징이 있다. 두 수 a와 b (a > b)가 있다고 할 때, a와 b의 최대.. 더보기
[백준알고리즘] 11653번: 소인수분해 -Python [백준알고리즘] 11653번: 소인수분해 -Python https://www.acmicpc.net/problem/11653 11653번: 소인수분해 첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다. www.acmicpc.net 소인수 분해 문제이다. 그냥 인수만 구하라고 한다면 2부터 sqrt(N)까지 반복하면서 나누어 떨어지는지 확인을 하면서 리스트에 넣으면 된다. 여기서 적용한다면 for i in range(2, sqrt(N)+1) 일 것이다. 파이썬에서 sqrt()는 math 모듈을 import해야한다. 그런데 그냥 소인수들을 구하라고 했기 때문에 N을 직접 나눠가면서 print 하도록 했다. import sys N = int(sys.stdin.readline()) while N.. 더보기
[백준알고리즘] 5086번: 배수와 약수 -Python [백준알고리즘] 5086번: 배수와 약수 -Python https://www.acmicpc.net/problem/5086 5086번: 배수와 약수 문제 4 × 3 = 12이다. 이 식을 통해 다음과 같은 사실을 알 수 있다. 3은 12의 약수이고, 12는 3의 배수이다. 4도 12의 약수이고, 12는 4의 배수이다. 두 수가 주어졌을 때, 다음 3가지 중 어떤 관계인지 구하는 프로그램을 작성하시오. 첫 번째 숫자가 두 번째 숫자의 약수이다. 첫 번째 숫자가 두 번째 숫자의 배수이다. 첫 번째 숫자가 두 번째 숫자의 약수와 배수 모두 아니다. 입력 입력은 여러 테스트 케이스로 이루어져 있다. 각 테스 www.acmicpc.net 단계별로 문제풀기 수학3의 첫 문제이다. 정수론과 조합론....이라고 한다.... 더보기
[백준알고리즘] 1541번: 잃어버린 괄호 -Python [백준알고리즘] 1541번: 잃어버린 괄호 -Python https://www.acmicpc.net/problem/1541 1541번: 잃어버린 괄호 첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 많이 연속되는 숫자는 없다. 수는 0으로 시작할 수 있다. www.acmicpc.net 단계별로 풀어보기에서 그리디 알고리즘의 마지막 문제이다. 이 문제는 괄호를 '+'와 '-'들 사이에 아무 데나 넣어도 된다는 점이 중요하다. 1+2+3-3+4+5 = 12 이지만 괄호를 다음과 같이 넣으면 결과가 달라진다. 1+2+3-(3+4+5) = -6의 결과가 나온다. 이.. 더보기
[백준알고리즘] 11399번: ATM -C, Python [백준알고리즘] 11399번: ATM -C, Python https://www.acmicpc.net/problem/11399 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net 그리디 알고리즘의 대표적인 예라고 생각하는 문제이다. 이 문제는 CPU scheduling 기법 중 하나인 SJF(Shortest Job First)을 알고 있다면 쉽게 풀 수 있는 문제이다. 이 문제도 마찬가지로 처리시간이 짧은 순서대로 정렬을 해서 처리를 해주면 된다. 다른 분들은 이 부분을 위해서 시간복잡도가 빠른 퀵 정렬 등을 사용해서 정렬을 해주었지만, 여기서 .. 더보기

728x90