본문 바로가기

전체 글

(426)
[Algorithm] [Python] 백준/BOJ - 1427 소트인사이드 1427 소트인사이드 문제 배열을 정렬하는 것은 쉽다. 수가 주어지면, 그 수의 각 자리수를 내림차순으로 정렬해보자. 입력 첫째 줄에 정렬하고자하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다. 출력 첫째 줄에 자리수를 내림차순으로 정렬한 수를 출력한다. 제출 코드 print(*sorted(list(map(int, input())), reverse=True), sep='') 다른 사람의 풀이 print(''.join(reversed(sorted(input())))) print(''.join(sorted(input())[::-1])) 나름 숏코드를 짯다고 생각했는데 역시 남들은 더 짧다...! join() 함수를 쓸 생각을 하지 못했던게 오점이였다ㅜㅜ
[Algorithm] [Python] 백준/BOJ - 1181 단어 정렬 1181 단어 정렬 문제 알파벳 소문자로 이루어진 N개의 단어가 들어오면 아래와 같은 조건에 따라 정렬하는 프로그램을 작성하시오. 길이가 짧은 것부터 길이가 같으면 사전 순으로 입력 첫째 줄에 단어의 개수 N이 주어진다. (1≤N≤20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. 출력 조건에 따라 정렬하여 단어들을 출력한다. 단, 같은 단어가 여러 번 입력된 경우에는 한 번씩만 출력한다. 제출 코드 word_list = list() sorted_word_list = list() for _ in range(int(input())): word_list.append(input()) set_word_list = ..
[Algorithm] [Python] 백준/BOJ - 1026 보물 1026 보물 문제 옛날 옛적에 수학이 항상 큰 골칫거리였던 나라가 있었다. 이 나라의 국왕 김지민은 다음과 같은 문제를 내고 큰 상금을 걸었다. 길이가 N인 정수 배열 A와 B가 있다. 다음과 같이 함수 S를 정의하자. S = A[0]*B[0] + ... + A[N-1]*B[N-1] S의 값을 가장 작게 만들기 위해 A의 수를 재배열하자. 단, B에 있는 수는 재배열하면 안 된다. S의 최솟값을 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 N이 주어진다. 둘째 줄에는 A에 있는 N개의 수가 순서대로 주어지고, 셋째 줄에는 B에 있는 수가 순서대로 주어진다. N은 50보다 작거나 같은 자연수이고, A와 B의 각 원소는 100보다 작거나 같은 음이 아닌 정수이다. 출력 첫째 줄에 S의 최솟값을 출력한다..
[Algorithm] [Python] Programmers - 완주하지 못한 선수 완주하지 못한 선수 문제 설명 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요. ### 제한사항 마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하입니다. completion의 길이는 participant의 길이보다 1 작습니다. 참가자의 이름은 1개 이상 20개 이하의 알파벳 소문자로 이루어져 있습니다. 참가자 중에는 동명이인이 있을 수 있습니다. 입출력 예 participant completion retu..
[Algorithm] [Python] Programmers - 하샤드 수 하샤드 수 문제 설명 양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요. 제한 조건 x는 1이상, 10000이하 정수이다. 입출력 예 arr return 10 true 12 true 11 false 13 false ###제출 코드 def solution(x): arr = list(str(x)) pos_sum = 0 for pos_num in arr: pos_sum += int(pos_num) if x % pos_sum == 0: return True else: return False..
[Algorithm] [Python] Programmers - 정수 제곱근 판별 정수 제곱근 판별 문제 설명 임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다. n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요. 제한 사항 n은 1이상, 50000000000000 이하인 양의 정수입니다. 입출력 예 n return 121 144 3 -1 121은 양의 정수 11의 제곱이므로, (11+1)를 제곱한 144를 리턴한다. 3은 양의 정수의 제곱이 아니므로, -1을 리턴한다. 제출 코드 import math def solution(n): x = math.sqrt(n) if x % 1 == 0: answer = (x+1)**2 else: answer = -1 return a..
Android App Hooking with Frida Android App Hooking with FRIDA 본 글에서는 앞서 설치한 FRIDA를 사용하여 App Hooking 예제를 풀며 공부한 내용을 작성한다. 문제 파일은 아래 링크에서 다운로드 받을 수 있다. Uncrackable1 Donwload Link ###[분석 환경] OS : macOS Mojave Tools : Frida, adb, Python 3.7.4, Genymotion ###[문제 풀이] adb install명령어를 통해 다운로드 받은 .apk파일을 설치한다. 그 이후, AVD에서 해당 앱을 실행시켜본다. 프로그램을 실행시키면 루팅 탐지가 동작되어 OK버튼 클릭시 앱이 죽는다. 루팅 탐지 루틴와 관련된 문제임이 느껴진다. 일단 jadx를 이용해 apk 코드를 분석해보도록 한다. 안드..
FRIDA_Install About Frida 이번 글은 Frida에 대한 소개글이다. FRIDA 참고 [ What is Frida? ] Frida란 파이썬 기반의 라이브러리 + 명령어로 구성되어 있고 Native App 에 대한 후킹을 통해 분석에 도움을 줄 수 있는 프로그램이다. Frida는 JS Injecton을 이용하여 Windows, Linux , IOS, Android, macOS ...등 기반의 네이티브 앱에 대해 후킹을 돕는 파이썬 라이브러리이다. (갓갓 파이썬!) Frida는 크게 패키지와 서버로 이루어져 있으며 분석하는 장치에는 패키지를 설치하고 분석의 대상이 되는 모바일 또는 에뮬레이터에는 서버를 삽입하여 구동하게 된다. 대표적으로는 IOS, Android 등 모바일 분석 덕에 널리 알려져 있으나 타 플랫폼에..