2022 스터디 15

[web hacking] 2022

이 글은 작년 진행했던 웹 해킹(보안) 스터디 백업본입니다. 주로 write up 으로 이루어져 있습니다. 워게임 등의 문제 답과 풀이가 나와있기 때문에 열람에 주의하시길 바랍니다. 1) webhacking 44번 문제 더보기 Challenge 44 webhacking 44번 문제 1) 코드분석 system("echo 'hello! {$id}'"); // You just need to execute ls 이 코드를 우회시켜 ls 명령어를 실행시키면 된다라고 나와있다.(힌트) 본래는 그저 넣은 문장을 echo로 내보내는 코드이다. 단, $id = substr($id,0,5); 를 주의해야 한다. 5글자까지만 입력이 가능하다.(substr문자열 자르기) 2) 문제 풀이 방향 - escapeshellcmd()..

2022 스터디 2023.11.03

java 스터디 사전조사

용어 정도는 이해하고 가야 이야기가 되지 않을까 싶어서 하는 사전조사 Back-End 공부에서의 자바를 목표로 https://medium.com/javarevisited/the-java-programmer-roadmap-f9db163ef2c2 The 2023 Java Programmer RoadMap An illustrated guide to becoming a Java Developer in 2023 with links to relevant courses medium.com 좋은 글이다... 이것은 그러니까 전반적으로 어떤 것들을 알아야 하는지 알려주는 건데... Java 자체의 자세한 로드맵은 제공되지 않는 듯 0. Git / Linux / 자료구조와 알고리즘 / HTTP / SQL / 디자인패턴 -..

2022 스터디 2023.05.14

정렬

1. 선택 정렬 시간복잡도: O(n^2) 제자리 정렬 알고리즘 중 하나 0번째에 올 원소, 1번째에 올 원소... 이렇게 선택해 가져오는 정렬 전체중에서 가장 "작은 것" 을 계속 반복해서 비교해야 함 1. 최소값을 찾는다 2. 그 값을 맨 앞에 위치한 값과 교체한다 3. 맨 처음 위치를 뺀 나머지 리스트를 같은 방법으로 교체 '다음'에 있는 원소들 중 '가장 작은 거' 작은 순서대로 바뀐다. 비교횟수: n-1, n-2, n-3 ... 2, 1번 n번이n/2번 있는 것 n * n/2 = 1/2n^2 -> 시간복잡도가 O(n^2) -이중 선택 정렬: 한 번의 탐색에서 최솟값과 최댓값을 같이 찾는 방법. 탐색 횟수가 절반으로 줄어듬 2. 삽입 정렬 시간복잡도: O(n^2) 정렬되어 있는 부분에 새로운 원소를..

[2023] 스택/큐

1. 스택(Stack) LIFO(Last in first out) 후입선출 메소드 -[삭제 연산] pop : 맨 위의 원소 제거 -[삽입 연산] push : 맨 위에 원소 하나 추가 특징 -삽입과 제거가 맨 위(Top)에서만 일어남[삽입/삭제의 시간 복잡도 Θ(1)] 장점 -배열처럼 원소를 삭제하거나 이동했을 때 나머지 원소들이 움직일 필요가 없다. -데이터를 추가/삭제하는 시간이 짧다. -맨 위의 원소만 접근 가능 사용 사례 -재귀 알고리즘 : 데이터를 스택에 쌓아두고 재귀가 끝나고 빠져나올 때 순서대로 데이터를 꺼낸다. -후위 표기법 계산 2. 큐(Queue) FIFO(First in first out) 선입선출 메소드 -[삭제 연산] dnQueue(디큐): 맨 앞의 원소 제거 -[삽입 연산] enQ..

2022 스터디 2023.03.13

넘파이 스터디 20230308

넘파이 배열 배열(array) 리스트(list)의 차이 1. 모든 원소가 같은 자료형이어야 한다. (배열 객체 객체는 C언어의 배열처럼 연속적인 메모리 배치를 가지기 때문에 ) (원소에 대한 접근과 반복문 실행이 빨라진다.) 2. 원소의 갯수를 바꿀 수 없다. 배열을 import 해주는 게 넘파이 NumPy 백터화 연산을 지원 배열 객체는 배열의 각 원소에 대한 반복 연산을 하나의 명령어로 처리하는 벡터화 연산 리스트 객체에 곱하면 크기가 정수배 만큼 증가 x = np.array(data) x # array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) 2 * x # array([ 0, 2, 4, 6, 8, 10, 12, 14, 16, 18]) array 객체 L = [0, 1, 2, 3, 4..

2022 스터디 2023.03.08

JAVA 스윙 공부

JFrame - 응용프로그램의 전체 컴포넌트 *컴포넌트(component)란 여러 개의 프로그램 함수들을 모아 하나의 특정한 기능을 수행할 수 있도록 구성한 작은 기능적 단위를 말한다. (해시넷 위키 http://wiki.hash.kr/index.php/%EC%BB%B4%ED%8F%AC%EB%84%8C%ED%8A%B8) 순수 컴포넌트 컨테이너 - 다른 컴포넌트를 포함할 수 있는 컴포넌트 Container 컨테이너 - Container 클래스를 상속받는 방식으로 사용 -컨테이너도 다른 컨테이너에 컴포넌트로 포함될 수 있다. [JFrame, JPanel, ...] 컨테이너 최상위 컨테이너 -다른 컨테이너에 속하지 않고도 독립적으로 화면에 출력될 수 있는 컨테이너(Top Level Container) JFra..

2022 스터디 2022.11.10

[5] Dynamic Programming

본 글은 https://www.programiz.com/dsa/dynamic-programming Dynamic Programming Dynamic Programming In this tutorial, you will learn what dynamic programming is. Also, you will find the comparison between dynamic programming and greedy algorithms to solve problems. Dynamic Programming is a technique in computer programming that helps www.programiz.com 요 글의 번역임을 알립니다. 문제가 되면 삭제합니다. 의역이 많습니다 Dynamic Pr..

[Greedy] 체육복

https://programmers.co.kr/learn/courses/30/lessons/42862 코딩테스트 연습 - 체육복 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번 programmers.co.kr def solution(n, lost, reserve): students = [-1] + ([1] * n) students[0] = -1 for i in lost: students[i] -= 1 for i in reserve: students[i] += 1 for i in range(1,n+1): if students[i] > 1: if students[i-1] ..

[4] What is object-oriented programming? OOP explained in depth

본 글은 https://www.educative.io/blog/object-oriented-programming What is object-oriented programming? OOP explained in depth Learn what is OOP, the building blocks of an OOP program, the four principles that make up OOP, and more. www.educative.io 요 사이트의 번역입니다. 문제가 되면 내립니다. 볼드체나 이미지, 코드등도 원본 글을 따릅니다. 이미지는 원본 글에서 링크로 참조합니다. Attributes -> 속성 Behaviors -> 동작 으로 통일합니다. What is object-oriented programm..

[3] Functional vs object-oriented programming

함수형 vs 객체 지향 프로그래밍 본 글은 Functional vs object-oriented programming Learn the difference between functional and object-oriented programming and how to choose an approach that works for you. circleci.com 위 사이트의 번역입니다. 문제가 생길 시 삭제합니다. 여는 말 프로그래밍은 과학만큼이나 예술적이다. 개인적인 성향은 프로그래밍 스타일에 큰 영향을 미치기 때문에 모든 사람들의 의견이 항상 같을 순 없다. 여전히 논쟁되는 화두는 두 다른 프로그래밍 양식에 대한 선호이다. 함수형 프로그래밍(functional programming)과 객체 지향 프로그래밍..