A ship in harbor is safe, but that is not what ships are built for.

전체 글 156

[정렬] K번째수

코테 준비... 먼 훗날의 이야기라고 생각했었다 영원히 신입생일 거라 생각했지만 어느새 졸작을 준비하며 취업시장에 뛰어들 때가 왔다(나만 늙었어...) 그래서 코테준비를 위해 프로그래머스와 백준의 문제를 조금씩 풀기로 했다. 뭔가 재정비하는 시간이 온 것 같아 약간 설레기도~ 처음은 무난한 것부터! 정렬문제로 시작해보자. 이번 문제같은 경우에 대략 윤곽이 나왔지만 문제에서 vector를 이용했기 때문에 해당 문법에 관련된 오류가 많았다.(보면 프로그래머스는 배열은 대부분 vector로 던져주는 듯...) 여기서는 vector과 정렬에 대한 부분을 정리하면 될 것 같다. What is Vector? Vector란 C++ 표준 라이브러리(Standard Template Library)에 있는 컨테이너로 사용..

[백준(BOJ)] 2750번 C++ 풀이

자료구조를 놓은 지 너무 오래되어서 가장 기본인 정렬 문제도 정리할 겸 이 문제를 풀었다. 문제에 대한 설명에서 시간 복잡도가 O(n²)인 정렬 알고리즘으로 풀 수 있고, 그 예로 삽입 정렬, 거품 정렬 등이 있다고 한다. 그래서 그냥 삽입 정렬로 풀어보기로 했다.(거품 정렬은 다음 포스팅에서 해보도록 하겠다) 그럼 우선 삽입 정렬에 대해 정리해보자. 삽입 정렬(insertion sort) 삽입 정렬이란 자료 배열의 모든 요소를 앞에서부터 차례대로 이미 정렬된 배열 부분과 비교하여 자신의 위치를 찾아 삽입해 정렬을 완성하는 알고리즘이다. 구체적인 과정을 살펴보겠다. 삽입 정렬은 2번째 자료부터 시작하여 그 요소의 앞(왼쪽)의 자료들과 비교하여 삽입할 위치를 지정한 후 자료를 뒤로 옮기고 지정한 자리에 자..

[WebRTC를 이용한 화상영상 서비스-(2)]

이번에는 STUN과 TURN에 대한 내용을 정리하려 한다. WebRTC 이해를 위해 필요한 전반적인 지식이니 다른 용어들과 함께 먼저 정리해보자. NAT(Network Address Translation) 우리가 누구인지 식별하기 위한 고유 이름이 있듯이 각 기기들도 그들만의 고유한 이름이 있다. 네트워크 상의 기기들의 고유 이름이 바로 IP인데 이것은 실제로 고유한 값일 수도 있고 아닐 수도 있다. 예를 들어 생각해보자. 각 가정마다 공유기는 모두 있을 것이다. 이 공유기에는 하나의 IP주소가 할당된다. 그렇다면 가족들이 서로 다른 기기들로 해당 공유기를 통해 인터넷에 접속할텐데 이 호스트들 간 통신은 어떻게 이루어지는가에 대한 의문이 발생할 것이다.(IP 주소는 하나인데 그럼 모두 같은 IP 주소를 ..

STUDY/PROJECT 2021.11.23

[WebRTC를 이용한 화상영상 서비스-(1)]

일단 내가 이 프로젝트를 왜 시작했는지부터 이야기하자면 시스템 종합설계 수업에서 진행하는 팀 프로젝트이기 때문이다. 이렇게 큰 틀을 가진 프로젝트를 이전에 진행해본 적이 없기 때문에 공부 내용이나 개발 과정 등을 기록으로 남기면 후에 이야깃거리로 사용하기 쉬울 것 같아 해당 내용을 포스팅하기로 했다. 처음에는 이론 내용부터 정리하고 이후 필요한 내용과 개발 내용들을 정리해보고자 한다. 이번에 팀원들과 함께 기획한 주제는 WebRTC를 통한 파티 애플리케이션이다. 기존에 있는 화상 영상 서비스에 여러 가지 엔터테인먼트 요소들을 추가할 예정이다. 간단하게 목표부터 말하면 다음과 같다. 1. 서버 구축 : web 화상채팅에 필요한 서버 구축 2. 웹 구현 : 리액트로 진행할 예정이다. 3. Multi 화상 채..

STUDY/PROJECT 2021.11.22

[백준(BOJ)] 2447번 C++ 풀이

오늘도 이어서 간단한 알고리즘 문제를 풀어보려고 한다. 이전 내용과 동일하게 재귀함수 관련 문제이다. [문제 풀이] 일단 규칙성을 확인해봐야 할 것 같다. 가장 작은 도형부터 시작하자. 가운데 부분만 비어있고 나머지는 채워져 있음을 알 수 있다. 이를 한줄로 이어보자. 비어 있는 칸은 차례대로 (1, 1), (1, 4), (1, 7), (1, 10), (1, 13), (1, 16) ... 이다. 이는 j % 3 == 1 일 떄 빈칸이라는 말과 동일하다. 같은 방식이 아래쪽, i에도 적용되므로 i % 3 == 1 && j % 3 == 1 을 만족할 때 좌표는 비어있게 된다. 이제 이를 확장해 n=9일 때를 살펴보자. 비어 있는 공간은 기본 빈 공간에 더해 (3, 3), (3, 4), (3, 5) (3, 3..

[백준(BOJ)] 10872번&10870번 C++ 풀이

최근 준비했던 일이 마무리되어 한달 정도의 시간적 여유를 가질 수 있게 되었다. 무엇을 할까 고민하다 최근 코딩 공부에 소홀했던터라 당분간은 빡세게(?) 전공 공부를 해볼까한다. 백준 알고리즘을 매일 풀어보려 하는데 특별한 목적이 있는게 아닌터라 그냥 내 마음가는대로 아무거나 선택해서 풀어볼 생각이다. 더불어 프로그래밍언어 중에서도 C++에 가장 소홀했기 때문에 백준 문제 풀이 겸 C++ 문법 정리 겸...(정말 거짓없이 C++ 문법 하나도 생각 안난다......;;;) 그래서 글이 개인적인 복습노트(?)가 될 터라 내용이 엉망진창이겠지만 누군가에게는 도움이 될 수도 있으니 글을 이어나가려 한다. [C++ 문법] C++의 표준 입력과 출력 : cin, cout //std 네임스페이스의 객체, 클래스 내 ..

Webhacking.kr 54번 문제(old)

문제부터 확인했다. 위와 같이 Password is 라고 나오고 뒤에 막 여러 문자가 나오다가 ?가 나오면서 멈췄다. 일단 소스코드부터 확인해보자. 뭔가 짧다... 일단 하나하나 확인해보자. Password is //Password is 다음 문자열을 aview라고 id 지정 ※ 동기식 vs 비동기식 1) 동기식 방식 : 요청과 결과로 이루어지는 실행 흐름의 단위가 맞아 떨어지는 방식 >> 요청과 결과가 순차적으로 이루어진다. (A요청 -> A응답 -> B요청 -> B응답 -> C요청 -> C응답) 2) 비동기식 방식 : 요청과 결과로 이루어지는 실행 흐름의 단위가 맞춰지지 않는다. >> 요청과 결과가 뒤죽박죽 (A요청 -> B 요청 -> A응답 -> C요청 ...) >> x.open 부분에서 순차적으로..

STUDY/WEB_Hacking 2021.01.25

[DB_SQL]조인(Join)과 데이터 무결성(Data Integrity)

카티션 곱(Cartesian product) - 모든 가능한 행들의 조인 - 검색하고자 한 데이터 이외 조인엔 사용된 테이블들의 모든 데이터가 반환 //특별한 가치는 없다. 위와 같이 모든 행들의 조인이 일어나 사원 하나에 다수의 부서가 match됨을 확인할 수 있다. 조인(Join) - 하나 이상의 테이블을 연결하여 데이터를 검색하는 방법 - 종류 1) 동등조인=내부조인(equi join) : 조인 조건에서 '='을 사용해 값들이 정확하게 일치하는 경우에 사용되는 조인 //대부분 기본키와 외래키의 관계를 이용 ex) 급여가 3000 이상인 사원에 대해 사원번호, 사원이름, 업무, 부서명, 급여, 위치를 검색 ※ 테이블 별칭(alias)을 이용해 긴 테이블 이름을 간단하게 사용할 수 있다. FROM 절에..

STUDY/Database 2021.01.22

Webhacking.kr 26번 문제(old)

문제의 메인화면을 보니 view-source 버튼만 딸랑있다. 확인해보자. 중요한 부분만 살펴보았다. int preg_match(string pattern, string subject, array[matches]); : subject에 일치하는 pattern이 있으면 참으로 반환, 패턴으로 알리기 위해 앞과 뒤에 슬래시(/)를 붙임 일단, admin을 url인코딩해 id값에 넣으면 문제가 해결될 것 같다. 온라인 상의 url인코딩을 써도 되지만 간단한 것이니 표를 봤다. admin은 url코드로 %61%64%6d%69%6e인 것을 확인했으니 get방식을 통해 전달해보자. 위와 같이 출력됨을 확인할 수 있다. 코드를 보면 preg_match 함수가 urldecode 앞쪽에 있어 영향을 받을 일이 없어보이는..

STUDY/WEB_Hacking 2019.12.18