본문 바로가기

전체 글154

비트마스크 드디어 길고 긴 plzrun님의 문제셋이 끝났다. 이제 종만북에 들어갈 수 있다. (참고 글 : plzrun님의 알고리즘 문제풀이(PS) 시작하기) 앞으로 종만북을 공부하면서 배운 내용을 매주 정리할 생각이다. 아, 그리고 2권부터 볼거다. 첫 번째 주제는 비트마스크! BOJ 11723 : 집합 비트마스크의 기본 연산들을 연습해볼 수 있는 문제. 11723번: 집합 첫째 줄에 수행해야 하는 연산의 수 M (1 ≤ M ≤ 3,000,000)이 주어진다. 둘째 줄부터 M개의 줄에 수행해야 하는 연산이 한 줄에 하나씩 주어진다. www.acmicpc.net #include using namespace std; int main(void) { int n; int set; std::string cmd; int ar.. 2020. 12. 1.
lldb 사용법 맥을 쓰면 기본적으로 lldb라는 디버거가 설치되어있다. 나도 피씬 때 처음 써봤는데 익숙해지면 정말 좋다. 피씬 시험볼 때도 애용한 편.. 나는 시간이 지나면서 사람들이 디버거를 사용할 거라고 생각했는데, 그렇지 않았다. 그러니 내가 홍보해야지. 이 글은 lldb의 매우 기본적인 기능을 다룬다. 글 맨 아래 링크의 글에 더 많은 기능이 소개되어있다! 컴파일 옵션 우선 디버깅을 하려면 컴파일 할 때 -g 옵션을 줘야한다. gcc -g main.c g++ -g main.c 이런 식으로. 그래야 디버깅을 할 때 코드를 볼 수 있다. 안 그러면 어셈블리로 디버깅하는 끔찍한 일이 벌어진다. 사실 끔찍하진 않다. 나는 좋아한다. 코드 보기 # 특정 함수 코드 보기 list main # 특정 파일 코드 보기 lis.. 2020. 11. 12.
42의 동료 평가, 그리고 시행착오 42의 동료평가, 그리고 시행착오 42에서는 멘토가 학생들을 평가하는 것이 아니라 학생끼리 서로의 프로젝트를 평가한다. 이 때 평가자는 피평가자의 프로젝트에 대한 지식이 있을 수도, 없을 수도 있다. 어느 경우던 간에, 평가자는 주어진 평가 기준 ("프로그램이 오작동을 하지 않는가?", "프로그램에 Memory Leak이 존재하는가?" 등의 기준)에 따라서 프로젝트를 평가하게 된다. 동료평가는 학생이 공부를 제대로 했는지 판단하는 시간이기 때문에 매우 중요하다고 할 수 있다. 전체적인 동료평가의 질에 따라서 42가 갖는 가치가 달라질 것이라고 생각한다. 학생이 평가하는 것의 장점은 우선 지속성과 다양성에 있다고 생각한다. 지속성이란 우리는 학생이 많은 만큼, 소수의 사람만 평가할 경우 지속이 불가능할 것.. 2020. 10. 28.
루팅 없이 안드로이드에서 Docker 돌리기 나도 내 홈 서버를 만들고 싶은데, 라즈베리파이는 비싸므로 내 태블릿으로 서버를 돌려보기로 했다. 뭔가 하려면 그래도 도커 정도는 돌릴 수 있어야겠지? Alpine Term 설치하기 alpine-term-v12.1-standard-release.apk xeffyr/alpine-term Run Alpine Linux in your pocket. Contribute to xeffyr/alpine-term development by creating an account on GitHub. github.com 앱을 설치하고 기다리자. 부팅을 하는 데 시간이 오래 걸린다.. 체감상 10-20분? apk add docker # 왼쪽 탭을 열면 각각의 /dev/ttyXX가 있는데, 각각의 탭을 열어서 다음을 실행 co.. 2020. 9. 18.
[Stack/미완] [BOJ 1918] 후위 표기식 꽤나 머리가 아팠던 문제. 시간을 더 투자해서 풀이를 더 정교하게 수정 해야겠다. 1918번: 후위 표기식 첫째 줄에 중위 표기식이 주어진다. 단 이 수식의 피연산자는 A~Z의 문자로 이루어지며 수식에서 한 번씩만 등장한다. 그리고 -A+B와 같이 -가 가장 앞에 오거나 AB와 같이 *가 생략되는 등의 수식은 주어지지 않는다. 표기식은 알파벳 대문자와 +, -, *, /, (, )로만 이루어져 있으며, 길이는 100을 넘지 않는다. www.acmicpc.net 문제 : 스택을 활용하여 중위표기식을 후위표기식으로 바꾸는 문제로, 후위표기식으로 바꾸면 연산자 우선순위에 상관없이 문제를 풀 수 있어서, 수식을 계산하는 데에 더 간단해진다. 정확히 말하면 이미 후위표기식으로 표기된 수식은 좌 -> 우에서 읽는 .. 2020. 4. 11.
[Stack] [BOJ 4949] 균형잡힌 세상 4949번: 균형잡힌 세상 문제 세계는 균형이 잘 잡혀있어야 한다. 양과 음, 빛과 어둠 그리고 왼쪽 괄호와 오른쪽 괄호처럼 말이다. 정민이의 임무는 어떤 문자열이 주어졌을 때, 괄호들의 균형이 잘 맞춰져 있는지 판단하는 프로그램을 짜는 것이다. 문자열에 포함되는 괄호는 소괄호("()") 와 대괄호("[]")로 2종류이고, 문자열이 균형을 이루는 조건은 아래와 같다. 모든 왼쪽 소괄호("(")는 오른쪽 소괄호(")")와만 짝을 이뤄야 한다. 모든 왼쪽 대괄호("[")는 오른쪽 대괄 www.acmicpc.net 풀이 이 문제에선 앞의 괄호 문제와 다르게, 괄호의 종류가 두 개가 됐다. 하지만 이 문제도 결국은 앞에서 푼 VPS문제와 같다. 다만 유효하지 않은 괄호의 정의가 살짝 바뀌었다. 1. 열어놓고 닫.. 2020. 4. 11.
[Stack] [BOJ 9012] 괄호 9012번: 괄호 문제 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 부른다. 한 쌍의 괄호 기호로 된 “( )” 문자열은 기본 VPS 이라고 부른다. 만일 x 가 VPS 라면 이것을 하나의 괄호에 넣은 새로운 문자열 “(x)”도 VPS 가 된다. 그리고 두 VPS x 와 y를 접합(conc www.acmicpc.net 풀이 문제 : BOJ 9012 괄호 유효한 괄호 (VPS : Valid Parenthesis)를 묻는 가장 기본적인 문제로, 스택을 활용해서 풀 수 있다. 문제에 설명이 복잡하게 나와있지만, 결국 괄호를 알.. 2020. 4. 11.
[DP] [BOJ 2579] 계단 오르기 2579번: 계단 오르기 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점수를 얻게 된다. 예를 들어 와 같이 시작점에서부터 첫 번째, 두 번째, 네 번째, 여섯 번째 계단을 밟아 도착점에 도달하면 총 점수는 10 + 20 + 25 + 20 = 75점이 된다. 계단 오르는 데는 다음과 같은 규칙이 있다. 계단은 한 번에 한 계단씩 www.acmicpc.net 문제 계단을 한 번에 최대 2칸까지 올라갈 수 있을 때, (연속된 세 칸을 밟을 수 없다.) n번째 계단에 도달했을 때 얻을 수 있는 최대 점수를 구하는 문제 해석 이 문제에서 "N 번째 계단에서 얻을 수 있는 최대 점수.. 2020. 3. 30.
[DP] [BOJ 11052] 카드 구매하기 11052번: 카드 구매하기 첫째 줄에 민규가 구매하려고 하는 카드의 개수 N이 주어진다. (1 ≤ N ≤ 1,000) 둘째 줄에는 Pi가 P1부터 PN까지 순서대로 주어진다. (1 ≤ Pi ≤ 10,000) www.acmicpc.net 참고 : 이 문제는 막대 자르기 (rod-cutting 문제와 동일한 문제이다.) 문제 카드가 1개, 2개, 3개, ..., N개가 담긴 카드팩이 있을 때, (카드 팩의 가격은 다를 수 있다.) 카드 N개를 가장 비싸게 살 때의 가격을 구하는 문제 해석, 부분 문제, 시간복잡도 그림을 그려보면 "카드 2개를 사는 최대 가격", "카드 1개를 사는 최대 가격" 등의 부분 문제가 중복됨을 알 수 있다. 이를 좀 더 일반화해보자. N개의 카드를 사는 최대 가격은 (1 2020. 3. 25.