문제 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이문제를 보고 인물들의 계층 구조를 보고 먼저 생각한 알고리즘은 DFS이다. 이 문제의 경우 재귀를 이용하는 방법 대신 Stack으로 탐색 노드를 저장해 pop하여 탐색할 수 있도록 설계했다. 이 문제에서 햇갈렸던 점이 소개해 준 사람이 얻는 이득을 계산하는 로직이였는데, 이는 이득의 합 계산이 아닌 각 이득의 10퍼씩 전달해야한다. 이말은 (10 + 20 + 30) * 0.1이 아니라 (10 * 0.1)+(20 * 0.1)+(30 * 0.1)으로 계산해야 한다. 코드function solution(enroll, referral, seller, a..
dfs
문제https://www.acmicpc.net/problem/2606 풀이해당 문제는 DFS와 BFS 풀이 모두 가능한 문제이다. 간단한 문제이기 때문에 DFS와 BFS를 다시 연습하기 위해 풀이했다. BFS 코드const input = require('fs') .readFileSync(process.platform === 'linux' ? '/dev/stdin' : __dirname + '/example.txt') .toString().trim().split('\n');const n = +input.shift();const linked = +input.shift();const arr = input.map(e => e.split(' ').map(Number));const map = {};const ..
문제 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이이번 문제는 단방향 그래프를 이용해 탐색을 진행할 것이다. 양방향 그래프 탐색을 생각도 해봤지만, 양방향을 사용하게 되면 모든 경로를 다시 처리해야하는 번거로움이 있기 때문에 단방향 그래프를 이용했다. DFS 알고리즘을 적용했으며, 각 탐색시 현재 위치, 양의 수, 늑대의 수, 방문할 노드를 전달한다. 이때 알고 가야하는 로직이 있는데, 방문할 노드를 결정할 때 방문할 노드에 있는 현재 노드를 현재 노드의 자식 노드들로 바꿔주어야 한다. 그래야지 중복으로 노드를 방문하지 않고 완전탐색을 진행할 수 있기 ..
문제https://school.programmers.co.kr/learn/courses/30/lessons/131130# 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이이 문제는 중복 확인이 중요 로직이다. 필자는 중복 확인 속도가 빠른 Set 객체를 이용하지 않고 배열을 사용했는데, 첫 번째 이유는 저장되는 데이터의 양이 적기 때문이고, 두 번째 이유로는 나중에 각 데이터의 길이를 구할 때 배열을 이용하는 것이 더 편하기 때문이다. 문제를 풀며 조심해야하는 부분은 이미 결과 배열에 중복되는 데이터가 있으면 braek문을 사용하지말고, continue문을..
문제https://school.programmers.co.kr/learn/courses/30/lessons/150368 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이이 문제의 경우 문제를 잘못 이해해 시간을 까먹고 햇갈려했던 문제이다.... 내가 부족해서... 이 문제에서 입력되는 데이터의 양을 보고 시간복잡도를 생각하며 굉장히 널널하다는 것을 알 수 있다.각 이모티콘별 적용되는 할인율이 다를 수 있기 때문에 각 할인율의 조합별로 인원이 구매할 것인지 멤버십에 가입할 것인지 판단하면 된다. 최종적으로는 멤버십이 판매액보다 중요시 되기 때문에 주의해야 한..
문제https://school.programmers.co.kr/learn/courses/30/lessons/12952 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이체스의 퀸이 움직일 수 있는 칸의 유형을 보자.퀸이 움직일 수 있는 범위는 4방향의 직선과 4방향의 대각선을 움직일 수 있다. 그렇기 때문에 N-Queen 문제에서는 모든 퀸의 위치에서의 8방향에서 또다른 퀸이 존재하지 않는 경우의 수를 구해야 한다. 위의 설명을 조금 생각해 본다면 한 줄에 하나의 퀸을 놓을 수 있다.(직선에 중복되는 퀸이 있으면 안된다)이 조건을 만족하기 위해서는 가로줄에..