안녕하세요. 오랫만에 뵙겠습니다. 간혹 가다가 백준에서 문제를 풀다 보면, 문자열이 x개 나오면 이 문자열들 사이에 특정 문자를 넣어야 하는 경우가 있습니다. 예를 들어, 테스트 케이스 문제라면 개행 문자를 넣는 경우가 있을 겁니다. python에서는 이러한 기능을 join으로 매우 쉽게 처리할 수 있었어요. 예를 들어, 이런 식으로 쓰면 출력은 어떻게 될까요? 아시다시피 'my name is cho'가 출력이 됩니다. 사용법도 그리 어렵지 않아요. 그냥 Iterable한 객체를 넘겨주면, separator가 element 사이에 끼어들어가 버리게 됩니다. 저 예제에서는 list를 넘겨주었고, Separator로 ' '을 넘겨주었기 때문에, 원소들 사이에 공백이 하나 들어갑니다. 그래서 my name i..
join 검색 결과
python에서 string에 append를 할 때, list에 append를 하고, join 메서드를 쓰곤 합니다. (전 귀찮아서 +=을 쓰곤 했습니다.) 간단하게 알아보겠습니다. 이 문서를 보시면 다음과 같이 정의가 되어 있습니다. iterable. 이는 반복될 수 있는 이라는 뜻을 가집니다. 그런데, 사실 이 블로그에서도 몇 번 이야기를 했습니다. 이터레이터. c++ STL 하면서 몇 번 언급을 했는데요. 순회 가능한 무언가라고 보시면 됩니다. 파이선에서는 dict, set, list와 같은 것들이 있습니다. 그러면 앞에 붙는 문자열이 어떤 역할을 하는지 보겠습니다. list li에 'A', 'B', 'C', 'D'가 있습니다. 2번째 줄에 '#'.join(li)가 있습니다. 결과값을 봅시다. A#..
테이블에서 PK가 걸린 컬럼이 있었습니다. 그 컬럼을 id라 하겠습니다. 수천개의 데이터를 insert를 해야 하는데, 해당 id값이 있는 데이터를 insert를 해야 하는 경우에, 오류가 발생합니다. 저는, 이러한 상황이 발생하는 데이터를 모두 뽑고 싶었습니다. 어떻게 하면 좋을까요? 제가 말한 문제를 해결하기 위해서, exists 구문을 사용하는 것을 고려해 볼 만 합니다. 이것은, 하위 질의의 결과가 빈 릴레이션을 반환하는 경우에 False를, 아니라면 True를 리턴합니다. 예제를 하나 들어보겠습니다. 먼저, t2에 있는 데이터들을 보겠습니다. 2개의 레코드가 있습니다. (1, 'cho')하고, (3,'gahui')가 있습니다. 먼저 exists 안에, select * from t2를 넣어보겠습니..
이번 시간에는 Self Join에 대해서 배워보도록 하겠습니다. 이것은, 자신과 자신을 Join하는 것을 의미하는데요. 예를 들어, 이런 경우를 생각해 볼 수 있어요. 도시 이름과 인구, 도시 ID가 저장된 테이블이 있다고 가정해 봅시다. 이 때, 해당 도시의 인구 랭킹을 구하고 싶습니다. 단, 동순위는 같은 번호로 처리합니다. 이 쿼리를 어떻게 처리하면 좋을까요? 물론 MYSQL도 지금은 rank 함수가 지원됩니다. 아마 8.0부터인가부터 말입니다. 실제로, 이것을 써 봤는데 무난하게 되었습니다. 하핫. 그런데 이 함수를 쓰는 게 불가능하다. 그러면 어떻게 하면 좋을까요? 몇 가지 방법이 있는데요. 그냥 성능 생각하지 않고 짤 수 있는 방법 중 하나는 self join을 하는 것입니다. 먼저, city..
오늘은 Java의 Thread 클래스 안에 있는 join 메서드가 어떤 식으로 동작하는지 간단하게 알아봅시다. 아래 예제 프로그램을 실행시켜 봅시다. 어떻게 실행이 될까요? worker a가 실행이 끝난 후에, Main 쓰레드가 종료됩니다. 그러면, join() 함수는 특정한 스레드가 종료될 때 까지 기다릴 때 쓴다는 건데, 어떤 식으로 동작하는지는 천천히 뜯어보도록 하겠습니다. a.run()을 호출하였습니다. 그 순간, worker a가 run() 메소드를 호출하면서 돌아갑니다. 대충 그림과 같은 상황입니다. 그 다음에, Main 스레드에서는 a.join()을 호출하는데요. 여기서 무슨 일이 일어나는지만 간단하게 봅시다. join을 호출할 때, 매개 변수가 없으면 내부적으로 join(0)을 호출합니다...
최근댓글