본문 바로가기

전체 글

(983)
Microsoft Ignite The Tour Seoul 1일차 방문기 저는 1/21일 강남 COEX에서 22일까지 개최하는 Microsoft Ignite The Tour 행사에 참가했습니다. 이 행사는 Microsoft의 Cloud Platform인 “Azure”에 대한 다양한 분야의 세션으로 구성된 행사입니다. 회사 명과 이름이 새겨진 뱃지를 받고… 행사 및 커뮤니케이션 장소인 홀로 들어갑니다. 여기서는 식사 및 간식이 제공됩니다. 저는 이런 행사는 처음이어서... 여기에서 시간 끌다가 첫번째 세션에 늦었습니다. ㅠㅠ 행사는 45분 간의 세션, 30분 간의 기나긴 휴식의 텀으로 진행되지만, 참가자들이 매우 많았고, 코엑스 건물이 워낙 크기 때문에 원하는 세션에 줄서서 자리 잡으면 시간이 다 지니갑니다… 그리고 한국인 강사의 한국어 세션과, 외국인 강사의 현장 통역이 제공..
[SI/SM] SI/SM 개발자의 이야기 연재. 1. SI/SM 회사는 무슨 일을 하나요? 개발자로서 그 동안 산출물을 남기는데 있어 너무 소홀했음을 자책하며... 또한 이 블로그의 가장 핫한 컨텐츠가 취업 관련 컨텐츠이기에 관련 컨텐츠를 자주 연재하기로 마음먹었다. 그래서 오늘은 내가 속해 있는 IT서비스 (속칭 SM/SI 회사) 업계에 대한 이야기를 해보려 한다. IT서비스 (SI/SM) 회사란? 다른 계열사의 시스템을 유지, 보수, 구축 해주는 회사이다. 삼성SDS의 예를 들어 설명하면, 삼성전자의 영업, 마케팅 직무가 활용하는 업무지원 시스템이 있는데... 이런 시스템들을 구축(만들어줌), 유지/보수 (버그 잡고, 요청에 따라 새로운 기능을 개발해주거나 UI, UX를 수정해줌) 해주는 업무를 수행한다. 왜 SI/SM은 헬이라고 하나요...? 1) 납기 보통 대기업 SI업체는 (앞으로는 ..
Programmers 코딩 테스트 연습 정렬(Sort) h-index 정답 Python. def solution(citations): answer = 0 citations_sorted = sorted(citations,reverse=True) for i in range(len(citations_sorted)): if citations_sorted[i]>=i+1: answer = i +1 continue else: break return answer # 6 5 3 1 0 이 문제는 왜 정렬을 써야하는가...? 를 빠르게 캐치해내지 못하면 한도 끝도 없이 못풀고, Idea를 이해하면 쉬운 문제이다. h번 인용 이상이 h개, 나머지는 h번 이하... 를 찾는게 중요하고. h는 크기보다 횟수에 초점을 맞추어야 한다는 것을 생각하면 쉽다. 먼저 테스트 케이스를 정렬하면 6 5 3 1 0 이렇게 되는데..
Programmers 코딩 테스트 연습 힙(Heap) 라면공장 정답. import heapq def solution(stock, dates, supplies, k): answer, idx = 0, 0 pq = [] while stock < k: # stock과 보급 전까지 버틸 수 있는 날자는 같다. for current in range(idx, len(dates)): # idx는 소진되지 않은 dates와 stock의 idx를 의미한다. if dates[current]
Programmers 코딩 테스트 연습 힙(Heap) 더 맵게 정답. 정렬과 해시, 힙, 스택, 큐는 시간 복잡도 개념에 있어서 익숙해 지는데 매우 중요한 문제들로 구성되어 있는 것 같다. 여러번 풀어서 반복 숙달하자. 이런 류의 정렬된 값을 계속 푸시 & 팝 해야 하는 경우는 우선순위 큐를 쓰는 것이 유리하고 리스트를 이용한 우선순위 큐는 파이썬의 heapq를 이용해서 만든다. (heap은 우선순위 큐를 구현하기 위한 자료구조이다.) PrioritiyQueue를 이용해서 만드는 방법도 있지만, 이는 (우선순위, 데이터)의 형태로 사용해야 하기 때문에 이런 문제를 풀기에 있어서는 귀찮다. 이 heapq에서 지원하는 heap은 minheap이다. 이 heapq를 통해 maxheap를 구성하기 위해서는 -를 넣어서 push해주고 다시 -를 붙여 pop해주는 약간의 번거로움이 ..
Programmers 코딩테스트 연습 베스트 앨범 Python 정답. 정렬이 무엇인지 제대로 보여주는 좋은 문제라고 생각한다. 딱히 복잡한 알고리즘이 아닌. 논리적인 사고로 문제를 설명하는 연습을 하게 해준다. 초기화: for문에서는 장르와 재생 횟수 dict {장르: 재생횟수} 장르에 들어갈 곡정보를 튜플로 만들어 {장르 : [튜플 리스트]} 튜플 (곡 id, 재생횟수) 1. 먼저 key value dictionary를 만들어 value로 장르를 정렬한 리스트를 keys를 통해 만든다. (내부 원소들은... 장르 이름 str들) 2. 이 key(장르 이름 str)들 순서대로 장르: 튜플 (곡 id, 재생횟수)를 정렬하여 결과 list에 원소들을 extend 해준다. (곡 id, 재생횟수) (-x[1],x[0])은 먼저 재생횟수 기준으로 내림차순 정렬, 그 이후 곡 id ..
Programmers 코딩테스트 연습 위장 목록 Python 정답. 이 문제는 간단하게 조합!을 찾는 문제이다. defaultdic같은 녀석을 쓰면 더 쉽게 풀 수 있지만, 단순히 key값을 세어 dictionary로 만든 후, 결과값들을 곱하는 식으로 구현하였다. answer에 val+1 해주는 것은 1은 해당 종류 입지 않았을 때. 마지막에 -1 해주는 것은 공집합 제거해 주는 것 시간복잡도는 hashmap을 내부적으로 이용하므로 logn으로 매우매우 효율적 def solution(clothes): dic = {} answer = 1; for i in clothes: if i[1] not in list(dic.keys()): dic[i[1]] = 1 else : dic[i[1]] = 1+ dic[str(i[1])] for val in dic.values(): answ..
Programmers 코딩테스트 연습 전화번호 목록 Python 문제풀이. 이 문제도 역시 "Hash"는 정렬이다! 라는 것을 너무도 잘 보여주는 문제이다. 일단 코드를 보고가자. def solution(phone_book): results = [str(i) for i in phone_book] results.sort() for i in range(0, len(results)-1): if results[i+1].startswith(results[i]): return False return True 아이디어는 다음과 같다. 1. 정수 배열을 String 배열로 바꿔준다. 2. 이를 오름차순으로 정렬하면... 사진과 같이 길이, 숫자의 배열의 유사도에 따른 정렬 결과를 얻게 된다. 따라서 가장 유사한 앞 뒤의 2개만 비교해주면... (앞이 prefix일 테니까) 우리가 원하는 정답..