안녕하세요. 이번 시간에는 java의 replace와 replaceAll에 대해서 간단하게 짚고 넘어가도록 하겠습니다. 사실 저는 문자 c1을 문자 c2로 바꾸기 위해서 replaceAll을 주로 이용하는 편이였어요. 그런데, 아시다시피 replaceAll은 내부에서 정규식을 위한 트리를 만들어서 생각보다 느려요. 모든 문자 c1을 c2로 바꾸는 메서드는 없냐? 라고 물으신다면, replace가 있어요. 예제만 간단하게 보겠습니다. "maple story 205"가 있어요. 저는 공백을 '|'로 바꾸려고 해요. 그러면 oldChar는 ' '가 되고, newChar는 '|'가 되겠죠? replace의 1번째 인자에는 ' '를, 2번째 인자에는 '|'을 넣으면 되어요. 실행 결과는 위와 같아요. 그런데 왜 ..
레퍼런스 검색 결과
leading zero, leading space 이런 문제들은 string을 다루다 보면 한 번 정도는 보실 문제들입니다. 10개의 width에 string 값을 오른쪽 정렬을 하고 남은 공간들은 space로 채운다고 했을 때, 이렇게 코딩했었습니다. 예를 들어 string이 길이가 10 이하라고 해 보겠습니다. cho를 오른쪽 정렬하면 " cho"가 되고, 왼쪽으로 정렬하면 "cho "가 됩니다. 이걸 저는 padding 길이를 구하고 그 길이만큼 padding이 되는 문자열을 만든 다음에 왼쪽, 혹은 오른쪽에 붙이는 식으로 하였습니다. repeated는 캐릭터 하나와 얼마만큼 반복할 것인지를 나타내는데요. 내부에는 그냥 StringBuilder 등으로 이어 붙여버립니다. 결과는 요래 잘 나옵니다. ..
java에서 map, set 계열을 다룰 때 전체 원소들을 순회해야 할 때가 있습니다. 이 때 어떻게 해야 하는지 간단하게 알아보겠습니다. 보통 map 계열 중에서는, treemap과 hashmap의 사용 빈도가 꽤 높은 편인데요. 이는 hash 계열은 equal 쿼리에, tree 계열은 range 쿼리에 매우 유리한 구조이기 때문입니다. 그리고 저는 농담처럼 자바에서는 TreeMap만 알고 있으면 풀 수 있는 코딩테스트 문제가 상당히 많을 거다. 라는 말도 하는데요. equal 쿼리도 성능이 그렇게 썩 나쁜 편이 아니기 때문입니다. 로그 복잡도로 찾아도 나름 빠르기도 하고요. 먼저, Map에서의 Key, Value 쌍을 모두 순회하기 위해서는, keySet을 이용해야 합니다. 이것은 Map에 있는 ke..
int to string과, string to int는 것은 생각보다 코딩 테스트에 상당히 자주 보이는 문제입니다. 물론 단독으로 출제되는 경우는 거의 없다시피 하고, 구현 문제의 중간 단계에서 필요한 경우가 왕왕 있습니다. 언젠가 정리해 두려고 했는데, 지금에 와서야 정리하게 되네요. 먼저, string을 int로 바꾸는 것은 Integer의 parseInt로 합니다. string을 long으로 바꾼다면, Long의 parseLong으로 하겠죠. 생각보다 parseXXX를 자주 쓰게 될 겁니다. 역으로, int를 String으로 바꾸기 위해서 Integer의 toString을, long을 String으로 바꾸기 위해서 Long의 toString을 이용합니다. 이것을 그림으로 그려보면 아래와 같아요. 어..
안녕하세요. 오랫만에 뵙겠습니다. 간혹 가다가 백준에서 문제를 풀다 보면, 문자열이 x개 나오면 이 문자열들 사이에 특정 문자를 넣어야 하는 경우가 있습니다. 예를 들어, 테스트 케이스 문제라면 개행 문자를 넣는 경우가 있을 겁니다. python에서는 이러한 기능을 join으로 매우 쉽게 처리할 수 있었어요. 예를 들어, 이런 식으로 쓰면 출력은 어떻게 될까요? 아시다시피 'my name is cho'가 출력이 됩니다. 사용법도 그리 어렵지 않아요. 그냥 Iterable한 객체를 넘겨주면, separator가 element 사이에 끼어들어가 버리게 됩니다. 저 예제에서는 list를 넘겨주었고, Separator로 ' '을 넘겨주었기 때문에, 원소들 사이에 공백이 하나 들어갑니다. 그래서 my name i..
최근댓글