전체 글 183

[소프트웨어 마에스트로] 소마 코딩 테스트 합격하는 법, 합격 팁 (소마 코딩 테스트 준비 방법)

/*** 필자의 주관적인 견해가 담긴 글입니다. 각자 공부법이 다르고 기수마다 편차가 있을 수 있으니 참고용으로 사용해주세요 ***/ 소프트웨어 마에스트로 13기 1차, 2차 코딩 테스트 합격 후기/팁 ▼ https://kbwplace.tistory.com/139 [소프트웨어 마에스트로] 13기 1차, 2차 코딩 테스트 합격 후기 (소마 코딩 테스트 문제 유형) 위 공식 일정표와 같이 서류 제출 후 약 2주 뒤에 1차 코딩테스트를 보고 정확히 2주 뒤에 2차 코딩테스트를 봤다. /*** 글 맨 아래 13기 문제 유형 총 정리 표가 있습니다. ***/ 1. 1차 코딩 테스트 위 kbwplace.tistory.com 각 키워드로 나눠 핵심적인 것들 위주로 흐름을 설명하겠다. 1. 알고리즘 공부 코딩 테스트를..

[소프트웨어 마에스트로] 2022 SW 마에스트로 13기 1차, 2차 코딩 테스트 합격 후기 (소마 코딩 테스트 문제 유형)

위 공식 일정표와 같이 서류 제출 후 약 2주 뒤에 1차 코딩테스트를 보고 정확히 2주 뒤에 2차 코딩테스트를 봤다. /*** 글 맨 아래 13기 문제 유형 총 정리 표가 있습니다. ***/ 소프트웨어 마에스트로 코딩 테스트 합격하는 법, 공부 방법 ▼ https://kbwplace.tistory.com/140 [소프트웨어 마에스트로] 소마 코딩 테스트 합격하는 법, 합격 팁 (소마 코딩 테스트 준비 방법) /*** 필자의 주관적인 견해가 담긴 글입니다. 각자 공부법이 다르고 기수마다 편차가 있을 수 있으니 참고용으로 사용해주세요 ***/ 소프트웨어 마에스트로 13기 1차, 2차 코딩 테스트 합격 후기/팁 kbwplace.tistory.com 1. 1차 코딩 테스트 위와 같이 서류합격 메일을 받으면 1차..

소프트웨어 마에스트로란? (소마 지원 규모, 목적)

최우수 SW 인재를 발굴해 체계적, 파격적 지원을 통해 SW 산업에 발전을 기여하겠다는 목적으로 기획된 정부 지원 사업이다. IT 관련 프로그램 중 가장 유명하고 인기가 많은 프로그램 중 하나이고 그만큼 경쟁률도 치열하다. (평균 10:1 ~ 8:1 정도) 국내 IT 대외활동 중 최고 수준의 지원을 받는데, 지원 내용은 아래와 같다. 소프트웨어 마에스트로 지원 규모 IT기기: 노트북 등 IT 기기 구입비 최대 200만원 지원 지원금: 프로젝트 개발 기간(6개월) 월 100만원 지원금 지급 개발비: 프로젝트 개발 기간(6개월) 720만원 개발비(1인 240만원) 지원 프로젝트 개발비: 팀별 프로젝트 재료비, 기술정보수집비 등 지원 멘토링: SW개발, 법률, 컨설팅 등 최고전문가(멘토단)의 멘토링 제공 글로..

디자인 패턴이란? (Software Design Pattern)

디자인 패턴이란? - 과거 소프트웨어 개발 과정에서 발견한 설계 노하우를 패턴으로 정리한 것을 말한다. 장점 1. 코드 스타일이 비슷해진다 -> 의사소통을 효율적으로 할 수 있다. 2. 이미 검증된 구조이므로 설계를 빠르게 할 수 있다. 디자인 패턴은 목적에 따라 크게 세 가지로 나뉜다. 1. 생성 패턴 2. 구조 패턴 3. 행동 패턴 이 중 생성 패턴에서는 싱글턴, 팩토리 메서드, 구조 패턴에서는 어댑터, 행위 패턴에스는 템플릿 메서드를 알아보겠다. 1. 싱글톤 패턴 (생성 패턴) - 인스턴스를 오직 1개만 생성하는 패턴 A, B, C라는 클래스가 있다고 하자. 이때 A, B, C 클래스에서 각각 D라는 클래스가 필요해 가져다 쓴다면 메모리에 같은 객체가 3개 생기게 된다. 만약 각각이 다른 정보, 다..

Base/용어 개념 2022.03.26

[Python/파이썬] 백준 알고리즘 1753번 - 최단경로 (다익스트라/Dijkstra)

""" 1. 아이디어 - 한점 시작, 모든 거리 : 다익스트라 - 간선, 인접리스트 저장 - 거리배열 무한대 초기화 - 시작점 : 거리배열 0, heap에 넣어주기 - 힙에서 빼면서 다음의 것들 수행 - 최신값인지 먼저 확인 - 간선을 타고 간 비용이 더 작으면 갱신 2. 시간복잡도 - 다익스트라 : O(ElgV) - E : 3e5 (문제에서 1

[Python/파이썬] 백준 알고리즘 10844 - 쉬운 계단 수 (DP)

처음에는 백트래킹으로 풀 생각을 했다.. import sys sys.setrecursionlimit(10 ** 6) input = sys.stdin.readline N = int(input()) cnt = 0 def backTracking(depth): if depth == N: global cnt cnt += 1 return elif num[-1] == 0: num.append(1) backTracking(depth + 1) num.pop() elif num[-1] == 9: num.append(8) backTracking(depth + 1) num.pop() else: for i in (num[-1] - 1, num[-1] + 1): num.append(i) backTracking(depth + 1)..

[Python/파이썬] 단어 변환 (BFS) (프로그래머스 코딩테스트 고득점 Kit)

from collections import deque def solution(begin, target, words): answer = 0 wordsNum = len(words) visited = [0 for _ in range(wordsNum)] queue = deque() queue.append(begin) while queue: popWord = queue.popleft() if popWord == target: answer = visited[words.index(target)] break for i in range(wordsNum): if visited[i] == 0: # 아직 방문하지 않은 단어만 방문함 check = 0 for j in range(len(popWord)): if popWord[j..

[Python/파이썬] 백준 알고리즘 13913 - 숨바꼭질 4 (BFS)

경로를 표현해야해서 처음에는 DFS로 탐색해야하나..? 생각했다 하지만 BFS로도 충분히 해결할 수 있었다. 경로에 대한 배열을 따로 만들어 최단경로에 대한 값을 저장하며 해결하는 것이다. # 아래는 따로 path 배열을 안만들고 파라매터로 받아 처리한건데 시간초과 나온다... # 왜 시간초과가 나올까..? import sys from collections import deque input = sys.stdin.readline N, K = map(int, input().split()) road = [0] * 100001 queue = deque() queue.append([N]) road[N] = 1 while queue: pathList = queue.popleft() popN = pathList[-1..

[Python/파이썬] 백준 알고리즘 13549 - 숨바꼭질 3 (BFS)

기존 숨바꼭질 문제에서는 모든 가중치가 1이었다. 이 문제의 차이점은 순간이동하는 경우는 0으로 가중치가 다르다는 것이다. 순간이동은 0초가 걸리고 걷기는 1초가 걸리므로 큐를 2개로 나눠 구현하면 된다. 이때 양방향 큐인 deque를 활용하면 별도의 큐를 더 생성하지 않고 구현할 수 있다. 순간이동하는 경우는 appendleft로 맨앞에 추가해주고 걷는 경우는 append로 뒤에 추가해주면 된다. import sys from collections import deque input = sys.stdin.readline N, K = map(int, input().split()) road = [0] * 100001 queue = deque() queue.append(N) road[N] = 1 while qu..

[Python/파이썬] 백준 알고리즘 12851 - 숨바꼭질 2 (BFS)

""" 1. 아이디어 가장 빠른 시간을 출력하고 '방법의 가짓수'도 출력해야하므로 dfs로 탐색해야한다. 최대 수는 동생 위치에서 수빈이의 위치를 뺀 값이고 해당 값에 도달하면 탐색을 마쳐야한다. (그때까지 찾아도 못찾았다는건 최단거리 탐색에 실패한 트리가지인거니까) dfs로 탐색했을 때 동생이 있는 점 K에 도달할 때 도달하는데 걸린 횟수를 저장한다. 그리고 다음에 또 도달하면 둘을 비교해 더 큰 값을 저장한다. 만약 같다면 같은 도달 시간 횟수를 체크한다. bfs로 탐색한다. visited 배열에 걸린 시간을 체크해서 적어두는데 이미 시간이 적힌 배열칸에 다시 접근하기 위해서 or 연산자를 이용해 visited[nextX] == visited[popX] + 1 를 추가한다. 2. 시간복잡도 - 3. ..

반응형