일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- Web
- 풀이
- hacking
- Python
- injection
- Algorithm
- command
- 자라나는새싹
- CSRF
- 인프런
- Programmers
- 알고리즘
- C언어
- WHS
- c
- dreamhack
- 웹해킹
- BaekJoon
- 백준
- 디지털 포렌식
- 워게임
- 드림핵
- 파이썬
- 자라나는 새싹
- 문제풀이
- 프로그래머스
- 스터디
- 포렌식
- WarGame
- XSS
- Today
- Total
목록알고리즘 (11)
Hoin's security

n의 배수 간단하다. 연산자 %과 조건문을 사용하여 나머지가 0인지 아닌지 판단해주면 된다. def solution(num, n): if(num%n==0): answer=1 else: answer=0 return answer 코드 실행결과 잘 작동한다. 굿굿 다른사람 풀이를 보니까 신기한 방법으로 풀었길래 그것에 대한 설명도 첨부한다. def solution(num, n): return int(not(num % n)) 굉장히 짧고 간결하다. num % n의 값이 0인지 비교하는게 아니라 int 형으로 비교한게 인상적이다. int(not())인 이유가 not 논리연산자는 값을 True와 False로 내는데 이걸 숫자로 바꾸기 위해 int를 사용했기 때문이다. 매우 흥미로운 풀이였다. 공배수 이것또한 간단하..

백준 10773번 문제를 파이썬으로 풀어보겠다. 스택은 데이터의 삽입과 삭제가 데이터의 가장 한쪽 끝에서만 일어나는 자료구조로 가장 마지막에 삽입된 데이터가 가장 먼저 사용되거나 삭제된다. 데이터를 삽입하는 과정을 push, 가장마지막에 삽입한 데이터를 삭제하는 과정을 pop라고 부른다. count = int(input()) # 입력받을 총 숫자의 수 stk = [] # 스택 리스트 for i in range(count): num = int(input()) if(num == 0): #num이 0이면 pop stk.pop() #pop()함수는 맨 마지막 원소를 리턴하고 해당 원소는 삭제함. else: stk.append(num) #그게 아니라면 append = push #append() 안에 값을 입력하면..

백준 1978번 문제를 풀어보겠다. 문제는 위와 같다. 소수는 1보다 큰 자연수 중 1과 자기 자신만을 약수로 가지는 수를 말한다. 이를 판별하는 방법은 입력받은 숫자를 2부터 입력받은 수-1까지 나누어 보았을 때 나누어 떨어지면 소수가 아닌 것으로 찾는 방법과 에라토스테네스의 체 알고리즘을 사용하는 방법이 있다. 전자는 효율이 떨어지기 때문에(속도가 느림.) 후자를 기준으로 살펴본다. 에라토스테네스의 체는 고대 그리스의 수학자 에라토스테네스가 만들어 낸 소수를 찾는 방법이다. 이 방법은 마치 체로 치듯이 수를 걸러낸다고 하여 '에라토스테네스의 체'라고 부른다. 에라토스테네스의 체 알고리즘은 여러 개의 수가 소수인지 아닌지를 판별할 때 사용하는 대표적인 알고리즘이고 N보다 작거나 같은 모든 소수를 찾을 ..

이어서 C언어로 풀이 진행한다. 주어진 문제와 코드는 위와같다. 파이썬 배울 때 썼던 버블정렬으로 오름차순으로 정렬해준 뒤 중앙값을 찾아주어야한다. 버블정렬은 위와 같은 로직으로 이루어진다. 버블정렬을 해준 뒤 배열의 길이를 2로 나눈 자리의 값을 return해주었다. 오늘도 성공적인 마무리!!

계속해서 C언어로 문제풀이 진행해보겠다. 주어진 문제와 코드는 위와 같다. for문을 사용해서 배열 array의 각 자리를 1씩 더해주면서 n과 일치하면 answer에 1씩 증가시키게끔 하였다.

이번 문제풀이도 C언어로 진행하겠다. 주어진 문제와 코드는 위와 같다. while문을 사용해서 answer와 6을 곱한 값이 n으로 나누었을 때 나머지가 0이 아닌 경우 answer에 1씩 더해주는 반복문을 만들었다. 나누어지면 반복문을 탈출하게끔 else에 break를 넣어줬다.

이어서 C언어로 문제 풀이 진행한다. 주어진 문제와 코드는 위와 같다. 먹는 사람이 7명이면 answer에 1을 대입해주고 아니라면 사람 수를 7로 나눈 뒤 딱 떨어지지 않는 경우를 대비해 1을 더해주게끔 하였다.

이어서 C언어로 풀이 진행한다. 주어진 문제와 코드는 위와 같다. temp변수를 안만들어도 괜찮았을거 같다.

C언어로 문제풀이 진행한다. 오,, 어렵다. 그치만 해본다 모르면 찾아보고 이해하면 되는 것. const는 constant의 약자로 상수를 뜻한다. 값을 변화시킬 수 없다는 뜻. 이걸 포인터에서 사용하면 어떻게 되냐면 int a=10; const int*num=&a; 위의 경우 num=20; 은 num이 상수로 되어있으므로 20이라는 값으로 변경될 수 없다. 그러나 a는 상수가 아니므로 a의 값은 변경될 수 있다. 문자열의 길이에 2를 곱해서 answer에 저장해주었다.

오늘은 백준 2163 문제로 시작한다. 2163번 문제는 초콜릿의 쪼개는 횟수의 최솟값을 출력하는 것이다. 겹쳐서 쪼개는 것이 아니므로 6조각이면 앞에서부터 하나하나 쪼개어 나간다고 생각하면 5번 쪼개게 되는 것이다. n,m = map(int,input().split()) print((n*m)-1) 오늘도 어김없이 파이썬으로 작성해본다. N과 M값을 n,m변수로 입력받아주고 쪼개지는 조각에서 1을 뺀 값을 출력해주면 된다. 예제를 입력했을 때 알맞은 출력값이 나오는걸 확인한다. 맞았다고 나온다. 이제 2525번 문제를 풀어보자. hour,min = map(int,input().split()) time=int(input()) min+=time if min>=60: hour+=min//60 min%=60 i..