이번 시간에는 c언어 fseek 함수를 배워보도록 하겠습니다. 이 함수는, 간단하게 요약하면 파일의 임의 위치에 접근하게 해 주는 함수입니다. 당연하게도, 탐색할 수 없는 파일이면, 이 함수를 호출하는 것이 무용지물일 거에요. 먼저, 0123456789라는 내용을 적은 input.txt를 생성해 보겠습니다. cat input.txt를 하면, 0123456789가 출력이 될 겁니다. 같은 디렉토리에 있는 실행파일 fs는 input.txt의 내용을 읽고 쓰는 함수입니다. input.txt가 존재하기 떄문에, 파일을 여는 연산은 성공해야 할 듯 싶습니다. 그런데 보기 좋게 fail이 뜹니다. 뭐가 문제일까요? 파일이 분명 있는데. 의심해 볼 만한 것 중에는 권한이 있습니다. 어떠한 User로 로그인이 되어 있..
전체 글 검색 결과
이벤트를 넣어두고 그것을 활용한다. 작년에 스터디를 하면서 처음 들어본 말이였습니다. 사실, Java에서 mouse event listener와 같은 것이나 call back 패턴에서만 쓰이는 줄 알았기 때문입니다. 그런데, 특정 문제에서 이것을 잘 활용하면 생각보다 간단하게 풀 수 있습니다. Egg라는 문제를 보도록 하겠습니다. 이 문제를 간단하게 설명하면 아래와 같습니다. 생각보다 쉽지 않습니다. 그런데, 점들이 삭제되거나, 생성되는 이벤트가 주어지지 않으므로, 다음의 발상을 생각해 볼 수 있습니다. 사실, 이것만 계산을 하면, 문제에서 요구하는 쿼리도 해결할 수 있습니다. 이것을 어떻게 해결하면 좋을까요? 보라색 영역에 점이 있다고 해 보겠습니다. 우리는 x좌표가 A 이하이고, y 좌표가 B 이하인..
오늘은 다소 빡센 구현 문제를 다뤄보도록 하겠습니다. 백준의 원판 돌리기 문제는 읽어 보셨을 겁니다. 혹시나, 안 읽어보셨다면, 링크로 가셔서 읽어보세요. 생각보다 문제가 깁니다. 중요한 조건은, 원판도 50개 이하, 적혀있는 수도 50개 이하, 회전 연산의 횟수도 50회 이하라는 것입니다. 그러면 1칸씩 회전을 한다고 해도 2500^2, 그리고 원판에서 적절한 연산을 하는 후처리는 연산당 50^3이 걸리겠네요. 일단, 문제를 3개로 쪼개는 것이 필요합니다. 이렇게 쪼갰다면, (1)번부터 차근차근 보도록 하겠습니다. 일렬로 편다는 것이 무슨 말인지 이해가 안 가실 듯 싶은데요. 쉽게 생각해 보겠습니다. 원판에 수가 위와 같이 적혀 있다고 해 보겠습니다. 시계 방향으로 1칸 회전시키면 어떻게 될까요? 요렇..
수학적으로 잘 설명된 포스팅은 많으니, 저는 ps 문제를 풀도록 하겠습니다. 백준 1649번 문제를 보겠습니다. 문제를 간단하게 요약하면 다음과 같습니다. 도시가 1000개 있습니다. 일방통행이 되는 도로 M개가 주어집니다. 중간 지점은 k개, C(1), ... , C(k)가 있다고 하겠습니다. A에서 출발해서 중간 지점들을 모두 거쳐서 B로 가고자 할 때, 가능한 경로의 가짓수를 구하는 것이 문제입니다. a에서 b까지 가는 도로는 최대 1개만 존재하고, 어떠한 교차로에서 출발해서, 다시 그 교차로로 돌아올 수 없다는 조건이 주어졌는데, 왜 이런 조건이 주어졌는지는 잘 모르겠습니다. 중간 지점들을 방문하는 순서는 정해진다는 관찰을 하면, 이 문제는 난이도가 상당히 쉬워 집니다. 이 관찰이 유효한 것인지 ..
db 교과서를 보니, 이런 문제가 나왔습니다. 왜 null 값이 도입되었을까? 사실 필요가 없어서, 도입되지는 않았을 겁니다. 몇 가지 상황에 대한 예를 들어보겠습니다. 농수산물에 대한 데이터 베이스가 있다고 생각해 보겠습니다. 테이블 하나만 고려해 보겠습니다. 각각 카데고리, 생산품의 고유 id, 생산자의 id를 의미합니다. 물론, 이것이 정보의 다는 아닙니다. 각 카데고리 id별로 어떠한 품목인지 저장하고 있는 테이블이 있을 겁니다. 그리고, product_id별로, 해당 상품의 이름을 저장하는 테이블도 있을 겁니다. 그리고, 생산자의 id와 생산자에 대한 정보를 저장하는 테이블 또한 있을 겁니다. 여기에서는 그냥 간단하게 이것 하나만 고려해 보도록 하겠습니다. 농수산물 p를 생산했지만, 누가 생산했..
최근댓글