이전에 사진 파일의 이름을 바꿔주는 프로그램을 작성할 때 알아야 했던 요소는 2가지였다.

하나는 이전에 설명한 사진에서 촬영 정보를 가져오는 것이었고, 다른 하나는 파일의 이름을 프로그램을 이용해서 변경해 주는 것이었다.

 

지난번 글에서는 사진의 정보를 파악하는 방법에 대해서 알아봤다.

이번에는 Python을 통해서 파일을 수정하고 변경하는 방법에 대해서 정리를 해봤다.

1) os.rename()

 

Python에서 파일의 이름을 바꿀 때는 os 

 

from PIL import Image

image = Image.open("image.png")

 

위의 방식처럼 먼저 Image.open을 이용해서 파일을 읽어와야 한다. 이때 "" 안에는 파일의 경로가 들어가야 한다.

 

이제 image를 이용해서 접근을 할 수 있는데 만약 촬영 날짜가 필요하다면 

 

image_info = image._getexif()

tmp_tim = image_info[36867].split()

 

이런식으로 정보를 가져오면 된다.

여러 장의 사진을 정리해야 하는 상황이 발생해서 사진 파일의 이름을 촬영한 날짜로 바꿔줘야 했다.

요즘은 이미지에 촬영 정보가 들어있어 그 정보를 읽어올 수 있으면 촬영 날짜를 받아올 수 있다.

오늘은 Python에서 이미지의 정보를 가져오는 방법에 대해서 정리를 해봤다.

1) pillow 모듈

 

pillow 모듈을 이용하여 이미지를 불러오면 이미지에 있는 정보를 활용할 수 있다.

먼저 모듈이 설치가 되었다는 가정하에서 진행을 하겠다.

 

from PIL import Image

image = Image.open("image.png")

 

위의 방식처럼 먼저 Image.open을 이용해서 파일을 읽어와야 한다. 이때 "" 안에는 파일의 경로가 들어가야 한다.

 

이제 image를 이용해서 접근을 할 수 있는데 만약 촬영 날짜가 필요하다면 

 

image_info = image._getexif()

tmp_tim = image_info[36867].split()

 

이런식으로 정보를 가져오면 된다.

지난번 방탈출을 끝내고 꽤 오랫동안 방탈출을 가지 않았었다.

그러던 중 오랜만에 여자친구와 방탈출을 가게 될 기회가 생겼다.

오랜만에 하는 방탈출이지만 이전에 많은 방탈출을 진행해 왔다고 생각해서 자신감이 붙어있는 상태였다.

또 오랜만에 하는 방탈출이라서 잘 찾아보고 가고 싶었다.

 

그렇게 고심 끝에 찾게 된 방탈출은 바로

 

 

제목 : 칠칠

장르 : 

 

스토리

임무 중 정신을 잃었다. '여긴 어디지?'

 

1 난이도

★★

 

처음으로 풀어보는 스타일의 문제들이 많이 있었다. 검색을 했을 때 흔히들 머더파커식 문제라는 말을 많이 사용했는데 그 말 뜻을 알 수 있었다. 문제들이 참신하고 재미있었고 진행하는 방식도 되게 재미있었던 것 같다. 다만 70분이라는 시간이 빠듯하다는 생각이 들었을 정도로 문제가 꽤 있었다.

 

2 공포도

 

 

전혀 공포스럽지 않은 테마였다.

 

3 인테리어

★★★★

 

정체불명의 장소에서 서로 간의 협동을 해야 하는 요소들이 많았는데, 인테리어가 이러한 부분에서 큰 도움을 줬던 것 같다. 방의 구조부터 전체적인 디자인까지 세밀하게 짜여 있다는 것이 매우 잘 만들어졌다는 느낌이 들었다.

 

4 스토리

★★★

 

내가 왜 여기에 갇혀있고 무슨 상황인지 전혀 모르는 상황에서 몰입감 있게 진행을 할 수 있었다. 특히나 전체적인 스토리를 이해했을 때 잘 짜여 있다는 생각이 들었고 문제를 푸는 내내 자연스럽게 스토리가 진행된 것 같아서 재밌었다.

 

5 총평

★★★

 

문제가 많이 있는 테마로 70분 동안 재미있게 문제를 풀고 나오는 시간이었다. 전체적인 스토리도 매우 맘에 들었고 문제를 푸는 방식도 신선해서 재미있게 즐겼다. 완성도 있는 방탈출이라는 생각이 들었다.

 

오랜만에 해본 방탈출이라서 힌트도 많이 쓰고 마지막에 아슬아슬하게 탈출을 하였다. 전체적인 스토리를 이해하고 나니 이해가 되는 부분들도 있었고 인테리어나 세밀한 부분까지 계획을 했다는 생각에 정말 완성도 높은 방탈출을 진행했다고 생각했다. 방탈출의 맛을 다시 들게 되어 당분간은 또 방탈출을 진행할 것 같다.

 

아래는 머더파커 홍대 1호점의 주소이다. 문제 푸는 것을 좋아하거나 친구와 협동해서 탈출을 하고 싶은 사람이라면 한 번쯤은 꼭 테마를 진행해 봤으면 좋겠다.

 

queue를 사용할 때 가끔 queue의 내부의 데이터의 정렬이 필요하다.

하지만 데이터가 추가될 때마다 정렬을 하기에는 queue를 이용해서는 어려움이 있다.

이러한 점을 해결하기 위해서 c++에서는 priority_queue를 제공한다.

오늘은 priority_queue 사용하는 방법에 대해 정리를 해봤다.

 

1) priority_queue란?

 

기본적으로 c++에서 쓰이는 vector같이 container adaptor의 한 종류이다.

지정된 우선순위를 기준으로 내부의 원소들을 자동으로 정렬을 해준다.

가장 큰 값이 top를 유지할 수 있도록 설계가 되어있으며 Heap 자료구조를 사용하고 있다.

 

어떤 원소가 Push 된다면 우선순위에 맞춰서 정렬이 되는데 이때 시간 복잡도는 O(logN)이다.

 

priority_queue를 사용하기 위해서는 헤더에 <queue>를 추가해야 한다.

 

2) priority_queue 사용법

 

priority_queue를 선언하는 것은 vector과 같다.

 

priority_queue <데이터 타입> 변수명;

 

이렇게 사용을 할 경우 자동적으로 큰 값이 top로 오게 정렬이 되어 있는 것을 알 수 있다.

 

만약 오름차순으로 사용을 하고 싶다면 어떻게 해야 할까?

 

priority_queue<데이터 타입, vector<데이터 타입>, greater<데이터 타입>> 변수명;

 

이런 식으로 규칙을 지정을 해주면 오름차순으로 queue에 저장되게 할 수 있다.

 

뒤에 greater은 임의의 사용자 함수로도 지정이 된다.

 

아래의 sort algorithm 글에서 정렬되는 규칙을 정한 것처럼 사용자 함수를 만들어서 3번째에 넣어주면 된다.

 

2023.05.09 - [프로그래밍/c, c++] - STL sort algorithm 사용하는 방법

 

STL sort algorithm 사용하는 방법

데이터를 다루다 보면 데이터를 정렬을 해야할 필요가 있는데 c++에서는 기본적으로 sort함수를 제공을 하고 있다. 오늘은 이러한 sort를 사용하는 방법에 대해서 정리를 해봤다. 1) sort algorithm sort

hizr.tistory.com

 

priority_queue에서 사용하는 함수들은 다음과 같다.

 

queue.empty();

queue가 비어있을 경우 true를 반환한다.

 

priority_queue.top();

queue의 첫 번째 값을 반환한다.

 

priority_queue.size();

queue의 사이즈를 반환한다.

 

priority_queue.push(값);

주어진 값을 queue에 집어넣는다.

 

priority_queue.pop();

queue의 첫 번째 데이터를 삭제한다.

 

priority_queue.swap(pq2)

priority_queue과 pq2의 내용을 서로 바꾼다.

평소 아빠는 아이패드로 방탈출 게임을 깨는 것을 좋아하셨다.

방탈출이 들어간 게임이나 큐브 시리즈 처럼 머리를 써서 탈출을 하는 것을 재미있어 하셨다.

그러다 문득 직접 방탈출을 하는 것을 가족들도 좋아할 것이라는 생각을 하게 되었다.

 

생각해보면 매번 친구나 여자친구와 방탈출을 하고 깨는데 익숙해져 있었다.

이번 기회에 한번 가족과 다 같이 방탈출을 가면 좋을 것 같았다.

그래서 내 여자친구와 우리 가족이 모여서 5명이서 방탈출을 진행하기로 하였다.

 

처음하는 방탈출이기에 난이도 선정을 하는 것이 중요하다고 생각해서 여러가지를 조사해봤다.

아빠는 방탈출 같은 게임을 많이 해봤지만 다른 가족들은 해본 적이 없어 테마 선택에 신중을 가했다.

그러던 중 마스터키의 테마 중 하나를 고르게 되었다.

 

 
 

제목 : 온칼로

장르 : 스릴러

 

스토리

전세계에서 유일한 핵 폐기물 처리시설 ONKALO:온칼로.

기나긴 프로젝트가 끝나고 완전봉인에 들어가는 순간,
옮기지 못한 마지막 핵 폐기물 발견된다.


봉인되기 전 마지막 1시간!
폐기물을 안전하게 옮기고 무사히
영구봉인을 마무리 하라!!

 

1 난이도

★★

 

문제의 진행에 있어서 신박한 문제가 많았고 쉽게 풀 수 있는 문제도 있어서 난이도는 적절했던 것 같다. 

 

2 공포도

 

 

어두운 분위기는 있지만 무서운 테마는 아니었다.

 

3 인테리어

★★★★

 

방공호에 들어온 듯한 느낌을 주는 비주얼에 매우 신기한 장치들도 많은 느낌이었다. 인테리어가 전체적으로 잘 꾸며져 있어서 보는 재미도 있었다.

 

4 스토리

★★★

 

전체적인 스토리는 핵 폐기물을 봉인을 하는 스토리로 진행이 되는데 큰 줄기를 따라서 이야기가 진행이 되기 때문에 스토리에 몰입감이 있었다.

 

5 총평

★★★

 

초심자도 재밌게 풀 수 있는 문제도 있고 어느정도 머리를 써야하는 문제가 있어서 난이도가 적절했던 것 같다. 그리고 내부 인테리어의 분위기와 스토리도 잘 어우러져서 몰입감 있게 즐길 수 있었다.

 

가족들 모두 처음 방탈출을 시도한 것인데 다들 너무 재미있게 몰입해서 즐겼다.

처음에 들어갈 때는 테마가 너무 어렵거나 쉬울까봐 걱정이 되었지만 난이도도 적절하고 신기한 장치도 있어서 다들 재밌게 했었던 것 같다.

다음에도 이런 방탈출을 가족들과 즐겨도 좋을 것 같다는 생각이 들었다.

 

이 곳의 테마는 다른 여러가지 테마도 있어서 다른 테마를 시도해봐도 좋을 것 같다.

 

 

홍대에서 친구와 저녁 약속이 있어서 가게 되었다.

저녁 식사가 끝나고 시간이 애매해서 여자 친구와 무엇을 할지 고민을 하였다.

그러던 중 항상 홍대에 방탈출 팻말을 들고 있는 사람을 보게 되었다.

 

여러 방탈출을 가봤지만 항상 찾아보고 검색을 하고 평이 좋은 것으로 가곤 하였다.

그런데 호객행위를 하는 것은 많이 봤지만 한번도 가본 적이 없어서 궁금하긴 하였다.

이참에 바로 방탈출을 가보기로 하였다.

처음 어디에 방탈출이 있는지 안내를 받고 갔을 때 여러가지 테마가 있었다.

그 중 적당한 난이도에 공포도가 약간 있는 테마가 있어서 궁금해서 들어가게 되었다.

 

 
 

제목 : 셰들렉의원혼 (구 해골성당)

장르 : 스릴러

 

스토리

1870년 체코의 세들렉 납골당. 전쟁, 흑사병으로 죽은 사람의 뼈 824만개로 장식된 곳.
수 많은 원혼이 있는 이 곳에서 관광을 하던 중 갑자기 문이 닫히고 주변을 돌아보니 혼자 남게되는데...

 

1 난이도

★★

 

문제의 난이도는 정말 쉬웠다고 생각한다. 생각보다 문제가 직관적이었고 바로바로 풀 수 있는 문제가 많아서 풀기 쉬웠다.

 

2 공포도

 

어두운 분위기여서 약간의 공포가 있을 수 있지만, 별로 무서운 부분은 없었다.

 

3 인테리어

★★

 

많이 아쉬운 느낌의 인테리어였다. 전체적인 느낌은 어두운 분위기를 만들어 냈지만 그렇게 방이 크지 않았다. 분위기 자체는 괜찮았었던 것 같다.

 

4 스토리

 

스토리 자체는 프롤로그를 제외하고는 크게 중요한 얘기가 없었던 것 같다. 그래서 몰입감이 있기 보다는 그냥 문제를 풀고 나오는 느낌의 방탈출이었다.

 

5 총평

★★

 

전체적으로 문제는 그럴듯 하였지만 인테리어나 전체적인 배치가 아쉬웠던 방탈출이었던 것 같다. 싼 값으로 가는 것은 괜찮지만 굳이 그러기 보다는 돈을 더 지불해서 다른 평이 좋은 방탈출을 갈 것 같다.

 

시간이 없어서 바로 간 방탈출이어서 할인이나 이런 것은 있었다.

하지만 전체적인 완성도나 방의 장치 이런 것이 많지 않고 스토리가 완성도가 있지 않아서 아쉬웠던 것 같다.

그래도 바로 가서 진행을 할 수 있고 테마가 많아서 한번쯤 가도 좋을 것 같다는 생각이 들었다.

 

 

 

지난번 정육점을 마친 뒤에 서로 부산에서 시간을 보내고 만나기로 했다.

나와 여자친구는 무엇을 하면서 시간을 보낼지 고민을 하였다.

저녁 약속 시간 전까지 카페를 가도 상관이 없었지만 무언가 다른 재밌는 것을 해보고 싶었다.

그러던 도중 이전 방탈출을 한 것이 너무 재밌어서 한번 더 방탈출을 해야겠다는 생각을 했다.

 

어떤 테마를 할지 찾아보던 중 부산에서 서울이스케이프룸이 있다는 사실을 알게 되었다.

서울이스케이프룸의 테마는 이전부터 들어본 적이 있어서 한번 가봐야겠다는 생각을 했었다.

그러던 중 이번에 테마를 보고 가보기로 결정을 하였다.

 

처음에는 에피소드가 이어진다는 것을 알고 1번부터 해야 된다는 생각을 했지만 시간이 맞는 것이 6밖에 없어서 바로 6번 에피소드를 진행하게 되었다.

 

 
 

제목 : 에피소드 6 죽음을 부르는 재즈바

장르 : 스릴러

스토리

떨리는 당신 손에, 편지가 쥐어져 있다. 거의 1년 전, 평생 잊지 못할 그날 살인자 의 방 404호에서 보았던 그놈의 필체와 똑같은 글씨다. 당신에게 끔찍한 살인 누명을 뒤집어씌우고 홀연히 사라진 ‘살인마 X’가 당신에게 편지를 보내온 것이다.

“안녕 친구, 오랜만이군요. 이거 놀랍습니다. 여태까지 단 한 명의 인간 도 제가 고안한 함정에서 탈출은커녕 살아나간 사람이 없었는데, 용케 이렇게 까지 저를 쫓아오고 괴롭히게까지 되었군요. 훌륭합니다. 저는 당신을 진심으로 존경하고 좋아하게 되었습니다. 이렇게 신나고 들뜨는 건 오랜만입니다. 우 린 어차피 언젠간 만나야 할 운명입니다. 괜찮다면 저와 직접 만나서 술 한잔 하 는 게 어떻습니까? 미국 남부 도시 뉴올리언스에 제가 아주 좋아하는 Bar가 하 나 있습니다. 20XX 년 XX월 XX일, XX시. 거기서 기다리겠습니다.” 살인마 X”

...

며칠 후, 약속된 당일날 당신은 뉴올리언스의 한 Bar에 찾아왔다. 찌든 양주와 담배 냄새가 풍기는 오래된 작은 재즈 바이다. 아직 이른 저녁이라 손님은 당신밖에 없다. 약속 시간보다 한 시간 일찍 도착한 당신은 독한 위스키를 먼저 한잔 주문한다. 주머니 안에 권총을 움켜쥔 손에 땀이 차기 시작한다. 과연.. 그놈은 정말로 나타날 것인가..

 

1 난이도

★★★★

 

난이도는 정말 어려웠던 것 같다. 검색을 할 때 기본적인 배경지식이 필요하다는 얘기를 들었었는데 이와 관련된 배경지식이 필요한지 알지 못해서 더 헤맸던 것 같다. 또한 긴박한 상황에서 문제를 풀어야 하는데 너무 당황을 해서 문제가 들어오지 않았던 것 같다.

 

2 공포도

★★

 

살인마를 쫒는 에피소드이기 때문에 분위기에서 오는 공포감이 있었고 긴박한 상황에서 문제를 제대로 풀지 못했던 것 같다. 약간의 공포 느낌이 있기 때문에 유의해야 한다.

 

3 인테리어

★★★★

 

처음 들어갔을 때 정말로 재즈바에 온 것 같은 분위기에 압도되었다. 살인범이 있을지도 모르겠는 상황이지만 정말로 재즈바에 들어온 것 같아서 신기했다. 중간중간 있는 장치들도 신기한 느낌이었다.

 

4 스토리

★★★

 

에피소드가 이어지는 스토리이기 때문에 전체적인 스토리를 이해를 하지는 못했기 때문에 매우 아쉬웠다. 하지만 7개의 테마가 이어지는 스토리인 만큼 깊은 이야기가 있을 것으로 예정되었다. 단순히 이번 테마만 생각했을 때는 목표가 명확했고 이해하기 편했다.

 

5 총평

★★★

 

처음 진행하는 방식의 방탈출에 당황을 한 부분이 있었다. 인테리어에서 오는 분위기가 정말 좋았고, 탐색을 하고 문제를 푸는 과정도 적절했던 것 같다. 다만 기본적인 배경지식이 필요했기 때문에 몰라서 힌트를 사용한 부분은 아쉬웠다. 하지만 유명한 테마인 만큼 완성도가 좋았고 마지막에 전체 설명을 들을 수 있어서 좋았다.

 

이번에는 정말 대실패를 하였다. 테마 자체는 정말 재미있고 완성도가 좋았지만 배경지식이 부족하였고, 마지막에 긴박한 상황에 문제를 제대로 인지하지 못하고 풀지 못한 것이 너무 아쉬웠다. 처음 방에서 시간을 너무 많이 보낸 것도 아쉬웠다. 그리고 새로운 방식으로 진행을 해서 당황한 부분도 있었던 것 같다.

 

그렇지만 그만큼 완성도가 좋은 테마였고 에피소드가 이어지기 때문에 정말 추천하는 테마이다.

기회가 된다면 시즌별로 에피소드를 즐겨볼 예정이다.

 

이번에 간 곳은 부산에 있는 지점이지만 서울이스케이프룸은 말 그대로 서울에도 있기 때문에 확인해 보면 좋을 것 같다.

다만 현재는 예약 페이지에서 테마가 없기 때문에 확인을 해봐야 할 것 같다.

 

 

친구들과 함께 부산 여행을 가게 되면서 일정을 진행하던 중 방탈출을 하자는 얘기가 나왔다.인원이 꽤 있긴 했지만 다들 방탈출을 좋아해서 빠르게 예약을 해서 진행하기로 하였다.그렇게 난이도를 확인하고 진행한 방탈출은 바로...

 

 

제목 : 당감동 정육점

장르 : 스릴

스토리

연쇄 살인 사건을 해결하고 오랜만에 얻은 꿀맛 같은 휴식

친구들과 휴양지에서 바비큐 파티를 위해 정육점에 들렀는데

빨간 조명 아래 정육점 주인으로 보이는 사람의 뒷모습이 보인다.

 

저기요 아저씨, 이거 한 근에 얼마죠?”

 

아무리 불러봐도 묵묵히 도마질만 하고 있다.

 

그리고 벽에 실종자 전단지 저건 왜 붙어 있는거지?

 

1 난이도

★★★★

 

방탈출의 난이도는 적힌 것 처럼 적당했던 것 같다. 문제들도 연관되어 풀만한 문제들이었고 분위기와 어울리는 문제들이 가득했다.

 

2 공포도

★★

 

분위기에서 오는 공포감이 있었다. 직접적으로 무언가 무서운 방탈출은 아니었지만 스토리나 인테리어 분위기에서 오는 느낌이 공포감이 들었다.

 

3 인테리어

★★★★

 

정육점에서 시작해서 진행하는 방의 분위기는 몰입감있게 진행할 수 있게 해주었고, 주변의 사물들이나 분위기가 매우 잘 어울렸다.

 

4 스토리

★★★★

 

전체적으로 진행되는 스토리가 스릴러 특유의 분위기를 이끌고 갔다. 살인의 이유와 왜 그것이 일어났는지에 대해서 찾아가는 과정과 누군가 쫓아오고 있다는 느낌이 매우 몰입감을 주었다.

 

5 총평

★★★

 

이번에도 진행을 하는데 실패를 하였다... 마지막 문제를 남겼다는 것을 알고 정말 아쉬움이 가득했다. 그렇지만 이번에는 스토리에 대해서 전반적으로 들을 수 있었고 이해를 할 수 있어서 다행이었다.

 

마지막에 정말 한 문제만을 남기고 시간이 끝났었다.

사람이 많다 보니 하나의 문제를 보더래도 여러명이 보느라 시간을 보내서 그런 것 같기도 하다.

 

조사를 할 시간이 없어서 급하게 찾아서 간 방탈출이었지만 생각보다 너무 만족스럽게 한 방탈출이었다.

여러 공포 방탈출을 가봤지만 이처럼 간접적으로 분위기를 내는 방탈출도 생각보다 무섭다고 생각했다.

 

부산에 갈 기회가 있으면 한번 가보길 추천하는 테마이다!

 

 

 

데이터를 다루다 보면 데이터를 정렬을 해야할 필요가 있는데 c++에서는 기본적으로 sort함수를 제공을 하고 있다.

오늘은 이러한 sort를 사용하는 방법에 대해서 정리를 해봤다.

 

1) sort algorithm

sort 알고리즘은 퀵 정렬을 기반으로 함수가 구현이 되어있다. 기본적으로는 시작과 끝 범위에 있는 인자들을 오름차순으로 정렬을 해주는 함수이다. 퀵 정렬을 기반으로 하기 때문에 평균적인 시간 복잡도는 n log n이다.

sort 함수는 <algorithm> 헤더파일에 속해있기 때문에 include를 해주어야 한다.

 

sort(T start, T end, Compare comp);

위에서 말한 것처럼 기본적으로 sort는 시작과 끝을 받아서 정렬을 해주는데 이때 세번째의 값으로 어떻게 비교할지에 대한 기준을 정해줌으로써 오름차순으로 할지 아님 내림차순으로 할지 결정을 해줄 수 있다.

 

기본적으로는 오름차순이 default이기 때문에 따로 지정을 하지 않을 경우에는 오름차순으로 정렬이 된다.

 

2) 배열 sort 사용법

int arr[5] = {1, 5, 3, 2, 4};
    
sort(arr,arr+5);

위와 같은 배열이 있을 때 sort를 하기 위해서는 시작 값에 arr을 넣어줌으로 써 배열의 시작 주소값을 넣어주고 기본적으로 sort는 마지막을 포함시키지 않기 때문에 arr+5를 함으로써 처음 값부터 5번째 값까지 정렬을 해서 오름차순으로 값을 반환해준다.

 

3) Vector sort 사용법

c++에서는 vector도 많이 사용을 하기 때문에 vector의 정렬의 방법에 대해서도 작성을 해보았다.

이미 v라는 vector에 값을 넣었다는 가정하에

sort(v.begin(),v.end());

이런식으로 함수를 사용하게 되면 vector안에 있는 값들이 자동적으로 오름차순으로 정렬이 되게 된다.

이처럼 값의 시작점과 끝의 범위를 알고 있으면 그 범위 사이의 값을 정렬을 진행할 수 있다.

 

4) 정렬 조건 변경

세번째 인자값을 통해서 정렬의 조건을 바꿀 수 있는데 기본적으로는 오름차순을 default로 설정이 되어 정렬이 된다.

 

sort(arr,arr+5,greater<int>());

그렇지만 세번째 인자에 greater<자료형>()을 넣어주게 되면 정렬을 할 때 내림차순으로 정렬을 하게 된다.

오름차순으로 정렬을 하고 싶을 때는 less<자료형>()을 넣어줘도 된다. 다만 기본형이 오름차순임으로 굳이 넣어줄 필요는 없다.

 

만약 비교해야 하는 것이 단순한 기준이 아닌 사용자의 기준으로 할 경우에는 bool 함수를 통해서 기준을 만들어서 넣어주면 된다.

 

struct People
{
	string name;
	int age;
};

bool compare(People a, People b)
{
	if(a.name == b.name)
		return a.age > b.age;
	else
		return a.name < b.name;
}

만약 사용자가 구조체를 만들고 이름이 같을 경우에는 나이를 비교를 하고 아닐 경우에는 이름의 사전 순서대로 정렬을 한다는 조건을 걸고 싶을 때는 위의 함수처럼 사용자가 직접 함수를 작성한 뒤에

sort(v.begin(),v.end(),compare);

이런식으로 함수의 이름을 세번째 인자에 넣어주면 된다.

문자열에 관련된 입력을 하던 도중 문제가 발생하였다.

String를 사용할 때 빈 공간이 있을 경우에는 제대로 입력이 안되고 문제가 되는 현상이 발생했다.

오늘은 이 부분을 처리하는 방법에 대해서 정리를 해봤다.

 

1) BlankInput 오류

 

oninput을 사용할 때는 가끔 이런 오류가 발생을 한다.

 

<input type="text" id="InputTest" oninput="MyFunction()">

<script>
function MyFunction() {
	console.log("oninput event");
}
</script>

 

기본적으로 input와 같은 태그 안에 어떤 입력이 들어오면 MyFunction 함수를 실행한다.

이때 리스너는 사용자가 입력을 할 때마다 함수를 실행한다.

 

위의 코드는 MyFunction을 실행하기 때문에 사용자가 입력을 할 때마다 "oninput event"라는 문자를 콘솔에 입력한다.

 

2) 오류에 대한 해결 방법

 

onchange는 input 태그의 focus를 잃은 순간에 작동을 한다.

예를 들어 input 태그에 입력을 하고 다른 곳을 클릭을 할 때 작동한다.

 

<input type="text" id="ChangeTest" onchange="MyFunction()">

<script>
function MyFunction() {
	console.log("onchange event");
}
</script>

 

 

위의 리스너는 사용자가 focus를 잃을 때마다 함수를 실행한다.

 

위의 코드는 MyFunction을 실행하기 때문에 사용자가 입력을 하고 다른 곳을 클릭을 할 때 "onchange event"라는 문자를 콘솔에 입력한다.

 

+ Recent posts