본문 바로가기
반응형

PS 문제 풀이/Baekjoon446

[BOJ] 백준 16235 나무 재테크 (Java) 삼성 sw 기출문제 모음 (코딩 테스트) 아래쪽으로 갈수록 최근에 출제된 문제입니다. ※ 삼성 SW 코딩 테스트 준비(A형) 삼성 SW 코딩 테스트 준비(A형) 하기 내용은 시기에 따라 다를 수 있으므로 참고자료로 활용하시기 권장드립니다 zoosso.tistory.com 출처: https://www.acmicpc.net/problem/16235 Input 5 2 2 2 3 2 3 2 2 3 2 3 2 2 3 2 3 2 2 3 2 3 2 2 3 2 3 2 2 1 3 3 2 3 Output 15 ① 5 x 5의 양분이 주어진 땅이 주어집니다. ② 2개의 나무가 존재합니다. - (2, 1)에 나이 = 3인 나무 - (3, 2)에 나이 = 3인 나무 * 한 칸에 여러개의 나무를 심을 수 있다. ③ 2(=K)년 .. 2021. 2. 16.
[BOJ] 백준 16235 나무 재테크 (C++) 삼성 SW 코딩 테스트 준비(A형) 삼성 SW 기출 모음 출처: https://www.acmicpc.net/problem/16235 Input 5 2 2 2 3 2 3 2 2 3 2 3 2 2 3 2 3 2 2 3 2 3 2 2 3 2 3 2 2 1 3 3 2 3 Output 15 어떤 언어와 자료구조를 이용하느냐에 따라 구현 차이가 있을 수 있습니다. - 한 칸에 여러 나무가 존재 - 봄에 양분을 먹는 경우 나이가 어린 나무부터 양분을 먹는다. - 양분을 죽지 못한 나무는 죽으면서 해당 칸의 양분으로 더해집니다. - map[][] 안에 양분energy과 나무 목록 tList를 가집니다. - [봄]: 나이가 작은 순으로 양분을 먹기 위해서 sort() 처리 - [여름]: 죽은 나무를 리스트에서 pop하기.. 2021. 2. 16.
[BOJ] 백준 1280 나무 심기 출처: https://www.acmicpc.net/problem/1280 Input 5 3 4 5 6 7 Output 180 x 좌표에 나무를 심는 비용 = 현재 심어진 모든 나무와 거리 ex) [A] - [B] - [X] - [C] - [D] - [E] ▶ |X - A| + |X - B| + |C - X| + |D - X|+ |E - X| 심으려는 위치 X를 기준으로 앞/뒤로 계산식을 표현하면 다음과 같습니다. 앞: 2 * X - (A + B) → 앞쪽에 심어져 있는 나무의 갯수 * 심으려는 좌표 - (앞쪽에 심어져 있는 좌표의 합) 뒤: (C + D + E) - 3 * X → (뒤쪽에 심어져 있는 좌표의 합) - 뒤쪽에 심어져 있는 나무의 갯수 * 심으려는 좌표 문제에서 요구하는 시간내에서 이를 구하.. 2021. 2. 16.
[BOJ] 백준 2268 수들의 합 출처: https://www.acmicpc.net/problem/2268 #세그먼트 트리 #구간 합 Input 3 5 0 1 3 1 1 2 1 2 3 0 2 3 0 1 3 Output 0 3 5 세그먼트 트리 구조를 구현하는 문제입니다. * 자료 범위가 long long 타입이 요구됩니다. * 주어지는 query 하는 구간이 i > j 일 수 있으므로 swap 처리가 필요합니다. - 특정 위치의 값을 수정하는 update() void update(LL tree[], int now, int s, int e, int pos, int val) { if (s == e) { tree[now] = val; return; } int L = now * 2, R = L + 1, mid = (s + e) / 2; if(pos 2021. 2. 16.
[BOJ] 백준 2536 버스 갈아타기 출처: https://www.acmicpc.net/problem/2536 Input 7 6 8 1 2 1 2 2 2 1 1 5 1 6 7 3 7 6 7 2 1 2 6 3 3 2 6 2 4 5 6 5 1 5 1 5 7 5 8 3 5 6 5 2 1 7 4 Output 3 ① BFS탐색하기 위해서 Queue에 출발지에서 승차할 수 있는 버스 번호를 저장합니다. 수평[idx] = idx번째에서 수평으로 이동하는 버스 번호를 저장합니다. 수직[idx] = idx번째에서 수직으로 이동하는 버스 번호를 저장합니다. ② BFS 탐색은 크게 2가지 방향으로 진행됩니다. - 수평(ㅡ)으로 이동하는 버스 - 수직( | )으로 이동하는 버스 ③ 수평으로 이동한다고 했을 때, x 좌표가 동일합니다. 해당 위치들에서 탈 수 있는.. 2021. 2. 16.
[BOJ] 백준 2848 알고스팟어 출처: https://www.acmicpc.net/problem/2848 Input 5 ula uka klua kula al Output luka 위상정렬 (Topological sort) 위상정렬 (Topological sort) 개념 DAG에서 의존성에 맞게 그래프의 정점을 정렬 DAG (Directed Acyclic graph) 간선에 방향이 존재하고, 사이클(cycle)이 없는 그래프. DAG는 노드간의 의존성을 나타내는데, 작업 간의 순서를 표현하는 zoosso.tistory.com 문자열들의 i번째 인덱스를 비교하여 우선순위를 판별한다. * 문자열의 접수가 같거나 포함되어 우선순위를 판별할 수 없는 경우 유의 ① n개의 문자열에서 사용된 알파벳을 정점으로 해서, 알파벳 간의 우선순위를 간선으로.. 2021. 2. 16.
[BOJ] 백준 2636 치즈 출처: https://www.acmicpc.net/problem/2636 Input 13 12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 1 1 0 0 0 1 1 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1 0 1 1 0 0 0 0 1 1 1 1 0 0 1 1 0 0 0 0 0 1 1 0 0 0 1 1 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Output 3 5 ① 가장자리는 치즈가 없는 곳입니다. 따.. 2021. 2. 16.
[BOJ] 백준 9436 Round Robin 출처: www.acmicpc.net/problem/9436 Input 5 17 7 10 90 2 0 Output 2 13 5 3 45 1 운영체제 (OS) 사용되는 Round Robin을 구현해보는 문제이다 문제에서는 주어진 T 만큼 count를 나눠가진다. ① 주어진 T만큼 List에 남아있는 Node의 count를 올려줍니다. List가 순환될 수 있도록 move()는 끝→시작으로 가도록 처리합니다. ※ 원형 큐를 생각하시면 좋습니다. ② 마지막에 추가 할당된 노드 제거 ③ 남아 있는 노드들의 count가 동일하지 확인 해당 과정을 몇 번의 turn 가지는지 구한다. #include const int MAX_N = 1e2 + 5; int N, T; struct Node { int count; Node.. 2021. 2. 16.
[BOJ] 백준 2744 대소문자 바꾸기 출처: https://www.acmicpc.net/problem/2744 Approach 단어의 길이가 최대 100자일 때, 주어진 단어에서 대문자는 소문자로 / 소문자는 대문자로 바꿔서 출력하는 문제이다. 대 / 소문자 알파벳의 아스키코드 값을 이용해서 대/소문자를 구분해 변경할 수 있다. ※ 알파벳은 26개이며 대문자와 소문자 아스키 코드 사이에 6개의 다른 특수문자가 존재한다. ▷ A ~ Z 는 65 ~ 90 까지 ▷ a ~ z 는 97 ~ 122 까지 #include char str[105]; int strlen(const char*s, int len = 0) { while (s[len]) len++; return len; } int isUpper(const char ch) { if ('A' 2021. 2. 16.
[BOJ] 백준 11648 지속 출처: https://www.acmicpc.net/problem/11648 Input 5 Output 0 Input으로 주어진 숫자가 규칙에 따라 1의 자리가 되는 단계를 출력하는 문제. 1의 자리를 파악하기 위해 정수를 문자열로 변환하여 처리. import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String str = sc.next(); sc.close(); int len = str.length(); int answer = 0; // 길이가 1이 될 때까지 (키파가 슬퍼질때까지) while(len > 1) { int temp = 1; .. 2021. 2. 16.
반응형