저번에 seq 명령어에 대해서 이야기 한 적이 있었습니다. 이것을 이야기 하면서, 쉘 프로그래밍에서 꽤나 유용하게 쓰일 법 하다고 언급을 했는데요. 예제를 통해서 알아보도록 하겠습니다. [관련글] 쉘 스크립트에서 $()과 $의 차이점이 뭔가요? seq 명령어에 대해 알아봅시다. 먼저, 1 row, 2 row, ... , 10 row를 출력해야 한다고 생각해 보겠습니다. 그럴 때 어떻게 하면 좋을까요? 단지, for in 문을 곁들이면 됩니다. 1부터 10까지 도는 것은 $(seq 10)에서 처리합니다. 이 글을 보시면, $()는 명령어의 실행 결과로 대치된다고 설명이 되어 있어요. 예를 들자면 $(seq 10)은 단지 1 2 3 4 5 6 7 8 9 10으로 대치될 뿐입니다. 그래서, 사실 이 쉘 프로그..
분류 전체보기 검색 결과
안녕하세요. 오늘은 리눅스 seq 명령어를 알아봅시다. 먼저 man 페이지를 봅시다. 이 명령어는 number의 순서를 출력합니다. LAST만 주는 것이 있고, FIRST와 LAST를 주는 것이 있고, FIRST, INCREMENT, LAST 3개를 주는 것이 있습니다. 이 중에, INCREMENT는 step을 의미해요. 예제를 보면서 이해해 보도록 하겠습니다. 먼저 seq 10을 입력했더니 1부터 10까지 출력되었습니다. LAST만 주어진 경우인데요. 이 때에는 default로 시작 수가 1이 됩니다. 이것을 c언어의 for loop로 치면 위와 같아요. 다음에 seq 5 10은, FIRST와 LAST가 주어진 상황입니다. 시작 수가 5이고, 끝 수가 10이니까, 5부터 10까지 출력되었습니다. 이 프..
string을 int로 바꿀 수 없을까요? c_str로 raw pointer를 리턴받고, atoi에 raw_pointer를 넘겨주면 됩니다. 사실 저는 stoi를 알기 전까지 이렇게 했습니다. 예제 프로그램을 보도록 하겠습니다. 저는 string "123"을 정수 123으로 바꾸고 싶습니다. 그렇게 하려고 s.c_str()의 리턴값을 atoi에 넣었습니다. 그러면, 실제 "123"을 들고 있는 위치인 p를 atoi에 넣게 됩니다. atoi는 이 위치부터 NULL이나, '0', ... '9'가 아닌 다른 것을 만날 때 까지 읽게 될 겁니다. 문자열에 대충 이래 저장이 되어 있다고 하면, '1'을 읽고 '2'를 읽고 '3'을 읽고 난 후에 숫자가 아닌 문자가 있으니, break를 걸 겁니다. 따라서, 이 때..
백준 문제를 풀다 보면, 균형 이진 트리를 써야 하는 경우를 종종 보셨을 겁니다. 이것을 다룰 때, x보다 큰 것 중 제일 작은 키, 같거나 큰 것 중 제일 작은 키, 작은 것 중 제일 큰 키, 작거나 같은 것 중 제일 큰 키를 실시간으로 구해야 하는 상황을 접하셨을 겁니다. java에서는 어떻게 하는지 간단하게 알아봅시다. 먼저, c++의 map에는 lower_bound, upper_bound가 있었습니다. 이와 유사하게 자바의 TreeMap에는 ceilingKey와 higherKey가 있습니다. 이 둘의 설명을 보겠습니다. 먼저, ceilingKey 메소드는 제일 작은 키를 리턴한다고 하는데요. 조건이 하나 있습니다. given key보다 크거나 같은 것. 예를 들어, 1, 2, 3, 7이 있다고 해..
그래프에 사이클이 있는지 없는지 판단하는 방법 중 하나는 위상 정렬을 이용하는 것입니다. 어떻게 이용한다는 것일까요? 방향성이 있는 그래프에서, indegree가 0인 게 하나도 없다면 사이클이 있다고 판단합니다. 물론, indegree가 0인 노드가 있는데 사이클이 있는 경우도 있습니다만, 이건 글의 말미에 잠깐 다루겠습니다. 먼저, 아래와 같이 조건을 제한해 보겠습니다. 방향성이 있는 그래프에서 아래 조건이 성립합니다. 이 경우, indegree 값이 0인 노드가 존재하지 않는 그래프에 대해서 판단하는 것 보다는 조금이나마 더 쉽습니다. 사이클이란, i에서 i로 가는 경로를 의미합니다. 제한된 조건을 만족하는 노드 갯수가 n인 그래프를 생각해 봅시다. 일단 indegree 값이 1이므로, 나가는 것이..
최근댓글