file 입출력을 다루기 위해서는, 입출력 함수들에 대해서 알고 있어야 합니다. 오늘은 이 중에서 getchar에 대해서 알아보도록 하겠습니다. 이 함수는 getc(stdin)을 호출한 것과 동일한 역할을 한다고 링크에서 설명을 하고 있어요. getc와 fgetc에 대해서는, 추후에 다시 설명을 할 기회가 있을 듯 싶네요. stdin에서 어떻게 읽어오는지 대략적으로 그림을 그리실 필요가 있어요. 예를 들어, 이런 프로그램이 있다고 생각해 봅시다. 저는 age와 성별을 받았습니다. 그렇게 해서, 나이와 성별에 대한 정보를 출력하기를 기대하고 있어요. 그런데, 실제로는, age에는 23이 들어갔는데 gen에는 M이나 F가 저장되지 않았다는 것을 알 수 있어요. 예를 들어 2를 입력하고 엔터를 쳤다고 해 봅시..
전체 글 검색 결과
백준 화성지도라는 문제는, 저를 골치 아프게 하던 문제 중 하나였습니다. 저는 이 문제를, 어떠한 상황으로 바꿔서 풀었습니다. 그 방법으로 접근해 보도록 하겠습니다. 세그 트리라는 말은 이 블로그에서는 언급하지 않았으니, '구간을 관리하는 자료 구조' 정도로 생각합시다. 그러면 조금 더 편하지 않을까 싶어요. 문제를 보셨고, sweeping에 대한 개념이 어느 정도 쌓여 있다면, 다음과 같은 쿼리를 처리해야 한다는 것을 알 수 있습니다. 문제의 특성상, 전체 구간을 보았을 때, 어떠한 특정 구간의 값이 0 미만으로 떨어질 일 또한 없다는 것을 알 수 있습니다. 구간 [a,b] 에 1이나 -1을 더하는 건 lazy 기법을 이용하면 쉽게 할 수 있을 듯 싶은데, 3번 쿼리가 문제입니다. 이 문제를 해결하기 ..
ps를 하시다 보면, 좌표 압축이라는 이야기를 심심치 않게 들으실 수 있습니다. 간단하게 말해서, 데이터를 정렬해서, 다시 순서를 부여하는 것을 말합니다. 특히 쿼리 문제에서 많이 보이는데요. 구간이 10^10개, 10^18개가 있는데, 쿼리가 단지 10만개라면, 10^18개를 다 들고 있지 않고, 중요한 구간이나 숫자만 들고 있는 기법입니다. 그러면 압축이 될 거에요. 이런 문제를 생각해 봅시다. 자. 여기서, Lv랑 Rv, 그리고 k는 [0, 10^10]에 속하는 정수라고 해 봅시다. 그리고 n과 Q가, 구간 [1, 10^5]에 속하는 정수라고 해 봅시다. 그러면, k와 Lv, Rv가 [0, 10^10] 범위에 속하는데, 어떻게 하면 좋을까요? 오프라인 처리가 가능하다면, 그냥 k값하고, Lv, Rv..
리눅스에서 ls -ail 명령어를 쳐 보면, 앞에 10자리의 이상한 문자열이 온다는 것을 알 수 있어요. 그리고, 우리는 권한 755를 준다. 664를 준다. 이런 말도 많이 하고요. 이게 무엇을 의미하는지 천천히 보도록 하겠습니다. home 디렉토리에서, ls -ail 명령을 입력해 보았습니다. 먼저, 앞에 오는 것을 빼고 3자리씩 끊어서 읽으시면 되는데요. 예를 들어 283269번 파일은 rwx, ---, --- 이렇게 온다는 것을 알 수 있습니다. 이는 소유자 chogahui05에 대해서만 Read, Write, eXecute가 허용이 되고, 소유자가 아닌, 그룹 chogahui05에 속한 유저들이나, 다른 사람들이 Read, Write, eXecute 할 수 없다는 의미입니다. chogahui06..
이번 시간에는 Objects 클래스에 있는 deepequals 메서드가 어떻게 동작하는지 알아보도록 하겠습니다. 사실, 카톡에서 누군가 질문을 올려주셔서 뜯어보게 되었습니다. 먼저, Objects의 deepEquals를 보면, a와 b를 받습니다. 80번째 줄을 보면, a와 b가 같으면 true를 리턴합니다. 가리키는 객체가 같다면 true를 리턴합니다. 그리고, a가 null이거나 b가 null이면 false를 리턴합니다. 그렇지 않으면, Arrays.deepEquals0을 호출합니다. 그러면 이 함수를 보도록 하겠습니다. 뭔가 너무 길어 보입니다. 조건 구문만 대략 10개가 넘는 듯 싶어요. 이 중 8개는 기본 타임의 배열인 경우에 처리를 하는 루틴입니다. 예를 들어, instance of char[..
최근댓글