본문 바로가기

Programing78

[코딩 도장] 1에서 10000까지 숫자 8 갯수 세어보기 코딩 도장(http://codingdojang.com/) 사이트에서 구글 입사 문제 중 하나로 아래와 같은 문제가 있어 풀어보았다. 1부터 10000까지 8이라는 숫자는 총 몇 번 나오는가? 8이 포함되어 있는 숫자의 갯수를 카운팅 하는 것이 아니라 8이라는 숫자를 모두 카운팅 해야 한다. (예를 들어 8808은 3, 8888은 4로 카운팅 해야 한다.) 문제에 나오는 숫자 정보를 상수가 아닌 변수로 가정했다. 시작 숫자: 1(from) 끝 숫자: 10000(to) 찾고자 하는 숫자: 8(findingNum) 일단 모든 수에 대해서 찾고자 하는 숫자(이하 findingNum)가 몇 개 있는지 카운팅 해 보는 방법으로 접근해 보았다. from ~ to 까지 모든 수를 반복하여 체크한다. 체크 대상 숫자를 .. 2017. 1. 4.
퇴각검색 알고리즘을 이용한 N-Queen 문제 “누워서 읽는 알고리즘” 책에서 소개된 N-Queen problem을 접하게 되었다. 첫 느낌은 어렵지 않을 것 같았으나 생각보다 쉽지 않았던 문제인 것 같다. 문제는 아래와 같다. 가로 세로 모두 N개의 칸이 있는 체스판 위에 N개의 여왕을 올려놓되 서로 공격해서 잡을 수 없도록 놓을 수 있는 방법은 모두 몇 개인가? 예를 들어 4X4라면 아래와 같이 4개의 Queen을 놓을 수 있다. “누워서 읽는 알고리즘” 책에서는 퇴각검색(BackTracking) 알고리즘과 함께 소개하고 있다. 퇴각검색이 무엇인지 먼저 소개하고 넘어가기로 한다. 퇴각검색이란 위키피디아에서는 아래와 같이 정의하고 있다. 퇴각검색(영어: backtracking, 한글: 백트래킹)은 한정 조건을 가진 문제를 풀려는 전략이다. 선뜻 이.. 2016. 12. 21.
HashMap, Hashtable, ConcurrentHashMap 동기화 처리 방식 먼저 HashMap과 HashTable의 차이에 대해서 알아보자. Key, Value 형식의 데이터를 저장하는 기능을 제공하는 자료 구조로 큰 맥락에서는 동일하다. 그러나 크게 3가지 정도의 차이를 보인다. Null 허용 여부동기화 여부iterator/Enumeration HashMap은 Key나 Value에 Null 값을 허용하지만 HashTable이나 ConcurrentHashMap은 Null을 허용하지 않는다. 그리고 내부 아이템을 순회하기 위한 기능을 제공하는데, 그 부분에 대해서도 차이가 있다.(자세한 내용은 아래 링크 참조) http://www.jpstory.net/2013/11/difference-hashtable-hashmap-concurrenthashmap/ 여기서는 HashMap, Ha.. 2016. 12. 20.
HashMap, TreeMap 그리고 LinkedHashMap의 차이 최근 어떤 기회로 TreeMap과 HashMap은 어떤 차이가 있는지에 대한 질문을 받았다. 과거 Java 책에서 관련 내용을 본 적은 있으나 잘 기억이 나질 않았다. 특별한 경우를 제외하고는 HashMap을 주로 사용했기 때문에 크게 관심 두지 않았던 것 같다. (Java 개발자라 칭하면서도 기본적인 것을 놓치고 있었던 것에 반성해 본다.) 그래서 한 번 정리해 본다. Java에는 Collection이라는 이름하에 Map, List, Set이 있다. 그 중에서도 Map에 대해서 정리해 보고자 한다.(JDK 1.8 기준) Map이란?key-value 형식의 데이터를 저장할 수 있는 자료 구조이다. Java 개발자라면 HashMap을 자주 사용할 것이다. Map은 인터페이스로 아래와 같이 선언되어 있다. .. 2016. 12. 19.