태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

목요일마다 가는 영어 수업이 있다. 제시간에 가면 항상 선생님들만 있고 학생들은 느지막이 와서 오늘은 일부러 느긋하게 갔다. 그랬더니 기다릴 필요 없이 바로 수업을 시작하는 딱 알맞은 시간이었다.

문득 그 자리에 앉아 있는 게 편안하고 익숙하다는 생각이 들었다. 지난 학기에 이어 두 번째 학기이다. 그래도 고작 1주일에 한 번 2시간 동안 진행되는 수업이 편안하고 익숙하다는 게 아무래도 이상했다.

곰곰이 생각해보니, 집에 앉아 있는 것을 제외하곤 익숙한 것이 별로 없다. 예전에는 아파트 라운지나 도서관 등 학교 건물에 자주 가곤 해서 그곳이 익숙해졌는데 그것도 뜸하다. 장 보는 마트는 익숙함이 아닌 의무적으로 뭔가를 사기 위한 목적만 존재하는 곳일 뿐이다.

시간은 점점 흘러가는 데, 생각한 대로 모든 게 잘 될까? 몇 년 후에 돌아보면 또다시 아무것도 아닌 일이 될까?

'[순보의 일기장]' 카테고리의 다른 글

[2017.03.25] 한 끗 차이  (0) 2017.03.26
[2016.04.07] 익숙함  (0) 2016.04.08
[2016.03.30] 시작이 반이다  (0) 2016.03.31
[2016.03.12] 알파고와 인공지능  (0) 2016.03.12
[2016.03.08] 온라인 강좌  (0) 2016.03.09


출처: The Huffington Post출처: The Huffington Post

내 컴퓨터가 꽤 좋은 사양임에도 불구하고 가끔 이유 없이 버벅거렸다. 특히 무선 키보드는 반응 속도가 초 단위에 가깝게 느껴지는 때도 있을 정도로 최악이었다. 그래서 가끔 재부팅을 해줘야 겨우 원래대로 돌아왔다. Microsoft 무선 키보드인데, 계속해서 키보드를 탓하고 있었다. 공유기의 주파수인 2.4GHz가 무선 키보드가 사용하는 주파수와 같은 대역이라 문제가 생기는 건가 해서 큰돈을 주고 5GHz 주파수 공유기를 사야 하는 건가 고민할 정도였다.

오늘에야 그 이유를 알았다. 내 컴퓨터에서 돌고 있던 수많은 보안 프로그램 때문이었다. 누가 내 컴퓨터를 느리게 만드는지 살펴보다 문득 작업 관리자에서 Ahnlab 프로세스가 있는 것을 보았다. 컴퓨터를 켠 후 은행 사이트에 들어가지도 않았고 V3는 일찍이 지워버렸는데 무슨 일인가?

인터넷을 검색해보니 ActiveX 대신 exe 파일로 보안 프로그램 설치 방식이 바뀌면서 보안 프로그램을 깔면 상시 동작한다고 한다. 이 무슨 해괴한 일인가?[각주:1] 작업 관리자에서 알 수 없는 프로세스를 하나씩 인터넷에 검색하면서 지워 나갔다. 무려 7개의 보안 관련 프로세스가 돌고 있었다. 이름을 적어보면 StSess.exe, nosstarter.exe, KOSinj.exe, veraport.exe, delfino.exe, AnySign4PC.exe,  imageSAFERStart_X86.exe,  imageSAFERStart_x64.exe다.

맙소사. 이제 가상 머신에서만 은행 업무를 봐야겠다. 가상 머신이라고 실행을 막지 않는다면...

  1. 생각해보면 웹 브라우저가 EXE 파일을 실행할 수는 없으니, 설치한 프로그램이 항상 실행되도록 하는 수밖에 없지 않은가? [본문으로]

'[일상의 한마디]' 카테고리의 다른 글

한국-펜실베니아 주 운전면허 상호인정  (2) 2017.04.17
주거 환경 개선 프로젝트  (8) 2017.03.20
온라인뱅크 보안 프로그램...  (0) 2016.04.05
부딪쳐라 짜릿하게  (0) 2016.03.18
미국 서부 여행  (0) 2014.10.06

그동안 아무것도 하지 않아 아무 일도 일어나지 않았다. '부딪혀라 짜릿하게'라는 말에 용기를 내어 그동안 망설이고 주저했던 일에 이번이 마지막이라는 심정으로 부딪혀 보았다. 다행히 생각보다 어렵지 않았다. 물론, 아직 실제로 이루어진 것은 아무것도 없지만, 도전하기 위해 문을 두드렸고 그 문이 자물쇠로 꽉 잠겨 있는 것은 아니었다는 점에 희망을 품어보고 용기를 내본다.

'[순보의 일기장]' 카테고리의 다른 글

[2017.03.25] 한 끗 차이  (0) 2017.03.26
[2016.04.07] 익숙함  (0) 2016.04.08
[2016.03.30] 시작이 반이다  (0) 2016.03.31
[2016.03.12] 알파고와 인공지능  (0) 2016.03.12
[2016.03.08] 온라인 강좌  (0) 2016.03.09

아무 일도 일어나지 않고 있는 나에게 한마디 하는 광고. 다만 요즘 우리나라 젊은이의 삶이 힘든 것이 그저 부딪치지 않아서만은 아닐 것 같다.

'[일상의 한마디]' 카테고리의 다른 글

주거 환경 개선 프로젝트  (8) 2017.03.20
온라인뱅크 보안 프로그램...  (0) 2016.04.05
부딪쳐라 짜릿하게  (0) 2016.03.18
미국 서부 여행  (0) 2014.10.06
알면 쉽고 모르면 몸이 고생...  (1) 2014.02.05

주어진 연결 리스트에서 일부분을 뒤집는 문제를 생각해보자. 연결 리스트에 [1, 2, 3, 4, 5]라는 값이 들어있고 2번째부터 4번째 사이를 뒤집는다고 하면, [1, 4, 3, 2, 5]가 된다. 연결 리스트 전체 뒤집기 문제보다 조금 더 생각할 거리가 있다.

전체 뒤집기와 다른 점은 뒤집기 경계에 있는 노드 정보를 기억해야 한다는 점이다. 뒤집기 부분 바로 직전 노드를 A라고 하고, 뒤집기 부분이 시작되는 노드를 B라고 하자. 그리고 뒤집기 부분이 끝나는 노드를 C라고 하자. 그러면 다음과 같이 처리해야 한다. 물론, 뒤집기 부분을 뒤집는 방법은 연결 리스트 전체 뒤집기와 같은 방법으로 처리해야 한다.

A.next = C
B.next = C.next

[1, 2, 3, 4, 5]의 예로 돌아가 보자. 뒤집기 부분은 [2, 3, 4]이다.  현재 노드가 가리키는 다음 노드가 현재 노드를 가리켰던 이전 노드가 되도록 하면 된다. (1) A노드는 1이므로 C노드인 4를 가리켜야 한다. (2) B노드는 2이므로 C노드의 next 노드인 5를 가리켜야 한다.

Before: 1[A] -> 2[B] -> 3 -> 4[C] -> 5
After: 1[A] -> 4[C] -> 3 -> 2[B] -> 5

개념은 위와 같다. 한 가지 주의해야 할 점은 뒤집기 부분이 첫 노드부터면 A노드가 실제로 존재하지 않고 head가 직접 C를 가리키게 해야 한다. 따라서 head가 C를 직접 가리키거나 A.next가 C가 되게 해야 한다. 이때 인자로 넘어온 head 값을 변경하기 위해서 포인터의 포인터를 사용해야 한다.

void reverseBetween(ListNode** head, int m, int n) {
	ListNode* cur = *head, *prev = *head, *start = NULL, **end = head;

	for (int i = 1; i < m; i++) {
		end = (ListNode**)&(cur->next);
		prev = cur;
		cur = cur->next;
	}
	start = cur;

	for (int i = m; i <= n; i++) {
		ListNode* nextnode = cur->next;
		cur->next = prev;
		prev = cur;
		cur = nextnode;		
	}
	start->next = cur;
	*end = prev;
}

풀기도 쉽지 않았는데, 설명하기는 더 어렵다.

+ Recent posts