문제 링크 programmers.co.kr/learn/courses/30/lessons/42746 코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 programmers.co.kr 문제 풀이 정렬하는 문제였습니다. 처음에는 두수를 앞자리부터 한자리씩 비교해서 정렬하였으나 이 방법으로는 통과하지 못하는 케이스가 있었습니다. 예)[212 , 21] 정답: 21221 다시 생각 해 본결과, 아예 두 수를 이어 붙여서 비교하면 둘 중에 어느 수가 먼저 이어붙였을 때 큰 수인지 알 수 있..
문제 링크 http://boj.kr/19236 19236번: 청소년 상어 첫째 줄부터 4개의 줄에 각 칸의 들어있는 물고기의 정보가 1번 행부터 순서대로 주어진다. 물고기의 정보는 두 정수 ai, bi로 이루어져 있고, ai는 물고기의 번호, bi는 방향을 의미한다. 방향 bi는 www.acmicpc.net 문제 풀이 삼성 코딩테스트 기출문제입니다. 그 전에 나왔던 아기상어(http://boj.kr/16236)의 시리즈로 내놨나 봐요 ㅎㅎ 아기상어는 BFS로 푸는 문제였는데 요 청소년 상어는 문제에서 주어지는대로 이동시키는 시뮬레이션 문제로 보입니다! 어렵지는 않았지만 문제를 읽다보니 물고기가 없는 칸으로는 이동할 수 없다. 이부분이 있는데 이 부분을 잘 못 이해해서 물고기 없는칸 이후 방향으로는 탐색하..
문제 링크 https://www.acmicpc.net/problem/14503 14503번: 로봇 청소기 로봇 청소기가 주어졌을 때, 청소하는 영역의 개수를 구하는 프로그램을 작성하시오. 로봇 청소기가 있는 장소는 N×M 크기의 직사각형으로 나타낼 수 있으며, 1×1크기의 정사각형 칸으로 나누어 www.acmicpc.net 문제 풀이 문제 설명에 맞게 시물레이션 해서 풀면 되는 문제입니다. 알고리즘 관련 배경지식보다는 구현력이 중요한 문제라는 생각이 듭니다. 소스 코드 import java.util.*; public class Main { static int [] dx = { -1 , 0 , 1, 0}; static int [] dy = { 0 , 1 , 0 , -1}; static int N; stat..
문제 링크 https://www.acmicpc.net/problem/1520 1520번: 내리막 길 첫째 줄에는 지도의 세로의 크기 M과 가로의 크기 N이 빈칸을 사이에 두고 주어진다. 이어 다음 M개 줄에 걸쳐 한 줄에 N개씩 위에서부터 차례로 각 지점의 높이가 빈 칸을 사이에 두고 주어진다. www.acmicpc.net 문제 풀이 dfs+dp 문제이다. 처음에는 bfs로 그냥 풀었다가 메모리 초과가 나버렸고, 그냥 dfs로 했다가 시간 초과가 나버렸다. dfs로 쭉 탐색하다가 오른쪽 끝 지점에 도달했을때 1을 리턴하고, 만약에 해당 지점을 탐색한 적이 있을 때 해당 값을 리턴한다. 소스 코드 import java.util.Arrays; import java.util.Scanner; public cla..
문제 링크 https://www.acmicpc.net/problem/2630 2630번: 색종이 만들기 첫째 줄에는 전체 종이의 한 변의 길이 N이 주어져 있다. N은 2, 4, 8, 16, 32, 64, 128 중 하나이다. 색종이의 각 가로줄의 정사각형칸들의 색이 윗줄부터 차례로 둘째 줄부터 마지막 줄까지 주어진다. www.acmicpc.net 문제 풀이 소스 코드 import java.util.*; public class Main { static int [][] paper; static int ans [] = {0,0}; public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); ..
문제 링크 http://boj.kr/2805 2805번: 나무 자르기 첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M을 www.acmicpc.net 문제 풀이 이 문제는 이분탐색에 분류되어 있는 문제이다. 이분탐색은 정렬되어있는 배열에서 원하는 값을 찾아가는 탐색법이다. 그런데 이 문제는 parametric search이라는 스킬을 이용해서 푼다. 간단하게 설명하자면 이분탐색은 시작과 끝의 중간점을 찾고 찾는 값이 더 크면 시작점을 중간점으로 잡고, 더 작으면 끝점을 중간점으로 잡고 다시 탐색하는것을 찾을 때 까지 반복한다...
문제 링크 https://www.acmicpc.net/problem/1629 1629번: 곱셈 첫째 줄에 A, B, C가 빈 칸을 사이에 두고 순서대로 주어진다. A, B, C는 모두 2,147,483,647 이하의 자연수이다. www.acmicpc.net 문제 풀이 해당 문제는 A의 B제곱을 구해서 C로 나눈 나머지를 구하는 문제입니다. 얼핏 보면 간단해 보이는 문제이지만 범위가 굉장히 크죠 A, B, C 모두 2,147,483,647 이하의 자연수입니다. 그래서 만약 A의 2,147,483,647 제곱을 구하려면 많은 연산이 필요하고, 시간 복잡도가 올라가게 됩니다. 그럼 이 문제를 어떻게 풀어야 할까요?? 분할 정복과 DP로 풀면 되는데, 다음에 나오는 예를 같이 보며 이해해보겠습니다. 예를 들어 ..
- Total
- Today
- Yesterday
- 카카오 코딩 테스트
- 백준
- local cache
- 삼각달팽이
- java
- 프로그래머스
- for of
- javascript
- 01타일
- spring cache
- 제네릭 타입
- RGB거리
- vaild
- DP
- 삼성기출
- 카카오 인턴십
- 삼성 코테
- 청소년상어
- 19236
- 날짜 유효성
- 오버로딩
- 커링
- 반례
- 제네릭(Generic)
- 39회차
- 문자열 압축
- yyyy-MM-dd
- 키패드 누르기
- 가장 큰 수
- 1629
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |