알고리즘 문제풀이
-
완주하지 못한 선수 LEVEL 1 https://programmers.co.kr/learn/courses/30/lessons/42576?language=cpp 문제 풀이 (효율성 X) 단순하게 생각하면 됩니다. 완주선수 목록에서 string을 하나씩 꺼낸다. 참가자 목록에서 찾아서 지운다. 마지막으로 남은 한 명의 이름을 참가자 목록에서 출력한다. 하지만 이는 효율성 테스트를 통과하지 못합니다. 우선 최대 100,000번 for문을 반복합니다 그리고 cpp의 find를 이용해 찾게되면 제일 끝에 있다면 100,000 찾아봐야 될 수도 있습니다 즉 O(n^2 + n) = O(n^2) 이 걸릴 것으로 예상됩니다 (n은 vector::erase의 time complexity) 문제 풀이 (효용성 O) 우선 s..
Level1 완주하지 못한 선수 (c++, python)완주하지 못한 선수 LEVEL 1 https://programmers.co.kr/learn/courses/30/lessons/42576?language=cpp 문제 풀이 (효율성 X) 단순하게 생각하면 됩니다. 완주선수 목록에서 string을 하나씩 꺼낸다. 참가자 목록에서 찾아서 지운다. 마지막으로 남은 한 명의 이름을 참가자 목록에서 출력한다. 하지만 이는 효율성 테스트를 통과하지 못합니다. 우선 최대 100,000번 for문을 반복합니다 그리고 cpp의 find를 이용해 찾게되면 제일 끝에 있다면 100,000 찾아봐야 될 수도 있습니다 즉 O(n^2 + n) = O(n^2) 이 걸릴 것으로 예상됩니다 (n은 vector::erase의 time complexity) 문제 풀이 (효용성 O) 우선 s..
2021.10.13 -
프로그래머스 월간 코드 챌린지 시즌 1 삼각 달팽이 Level 2 삼각 달팽이 문제 정리 정수 n이 주어진다. 밑변의 길이와 높이가 n인 삼각형이 있다. 이 삼각형에서 맨 위 꼭짓점부터 반시계 방햐야으로 달팽이 채우기를 진행 한다. 첫 행부터 마지막 행까지 모두 순서대로 합친 새로운 배열을 return 한다. 문제 풀이 n이 최대 1000이므로 시뮬레이션 처럼 돌린다. 백준의 마법사 상어와 토네이드와 비슷한 방식으로 풀었다. 달팽이 모양으로 움직이기 위한 방향은 세가지가 있다.(아래, 오른쪽, 왼쪽 위 대각선) 이를 각각 구현한다. 단계 마다 이동해야 하는 step수를 steps 배열에 담는다. 예를들어 n이 4 이면 3(아래 이동), 3(오른쪽 이동), 2(대각선 이동), 1(아래 이동) 이동하게 된다..
[배열] 프로그래머스 월간 코드 챌린지 시즌1 2번 : 삼각 달팽이 자바 풀이프로그래머스 월간 코드 챌린지 시즌 1 삼각 달팽이 Level 2 삼각 달팽이 문제 정리 정수 n이 주어진다. 밑변의 길이와 높이가 n인 삼각형이 있다. 이 삼각형에서 맨 위 꼭짓점부터 반시계 방햐야으로 달팽이 채우기를 진행 한다. 첫 행부터 마지막 행까지 모두 순서대로 합친 새로운 배열을 return 한다. 문제 풀이 n이 최대 1000이므로 시뮬레이션 처럼 돌린다. 백준의 마법사 상어와 토네이드와 비슷한 방식으로 풀었다. 달팽이 모양으로 움직이기 위한 방향은 세가지가 있다.(아래, 오른쪽, 왼쪽 위 대각선) 이를 각각 구현한다. 단계 마다 이동해야 하는 step수를 steps 배열에 담는다. 예를들어 n이 4 이면 3(아래 이동), 3(오른쪽 이동), 2(대각선 이동), 1(아래 이동) 이동하게 된다..
2020.11.06 -
프로그래머스 월간 코드 챌린지 시즌 1 두 개 뽑아서 더하기 Level 1 두 개 뽑아서 더하기 문제 정리 주어진 배열에서 서로 다른 인덱스의 두 수를 뽑는다. 더해서 만들 수 있는 모든 수를 오름차순으로 정렬하여 return 하라 문제 풀이 이중 for문을 돌면서 i와 j가 같지 않은 경우 set에 넣는다. (중복 제거를 위해 set에 넣음) set크기의 배열을 생성 iterator를 통해 set의 원소들을 모두 뽑아 배열에 넣는다. Arrays.sort()를 통해 오름차순으로 정렬한다. 프로그래머스 두 개 뽑아서 더하기 java 두 개 뽑아서 더하기 cpp 가능한 조합을 모두 vector에 넣고 sotring을 우선 진행한 다음에 unique 함수를 통해 연속된 수 중 중복된 수를 지웠습니다 이 외에..
[정렬] 프로그래머스 월간 코드 챌린지 시즌1 1번 :: 두 개 뽑아서 더하기 (cpp, java)프로그래머스 월간 코드 챌린지 시즌 1 두 개 뽑아서 더하기 Level 1 두 개 뽑아서 더하기 문제 정리 주어진 배열에서 서로 다른 인덱스의 두 수를 뽑는다. 더해서 만들 수 있는 모든 수를 오름차순으로 정렬하여 return 하라 문제 풀이 이중 for문을 돌면서 i와 j가 같지 않은 경우 set에 넣는다. (중복 제거를 위해 set에 넣음) set크기의 배열을 생성 iterator를 통해 set의 원소들을 모두 뽑아 배열에 넣는다. Arrays.sort()를 통해 오름차순으로 정렬한다. 프로그래머스 두 개 뽑아서 더하기 java 두 개 뽑아서 더하기 cpp 가능한 조합을 모두 vector에 넣고 sotring을 우선 진행한 다음에 unique 함수를 통해 연속된 수 중 중복된 수를 지웠습니다 이 외에..
2020.11.05 -
BOJ 20056번 마법사 상어와 파이어볼 자바(java) 풀이 랭크 : 골드5 백준 20056번 마법사 상어와 파이어볼 문제 정리 NxN 크기의 격자 파이어볼 M개 i번 파이어볼의 위치(r, c), 질량 m, 방향 d, 속력 s 격자의 번호는 1~N 1번 행은 N번과 연결/ 1번 열은 N번 열과 연결 파이어볼은 8개의 방향을 가짐 파이어볼은 다음과 같이 이동한다. 7.1 자신의 방향 d로 속력 s 만큼 이동 7.2 이동이 끝난 뒤, 2개 이상의 파이어볼이 같은 칸에 있으면 다음 일이 일어남 - 같은 칸의 파이어볼은 모두 하나로 합쳐짐 - 파이어볼이 4개로 나누어짐 - 나누어진 파이어볼의 질량, 속력, 방향이 바뀜 - 질량이 0인 파이어볼은 소멸 K번 명령 후, 남아있는 파이어볼의 질량의 합 구하기 전체..
[시뮬레이션] 백준 20056번 마법사 상어와 파이어볼 :: 삼성 sw 역량 테스트 기출 (java)BOJ 20056번 마법사 상어와 파이어볼 자바(java) 풀이 랭크 : 골드5 백준 20056번 마법사 상어와 파이어볼 문제 정리 NxN 크기의 격자 파이어볼 M개 i번 파이어볼의 위치(r, c), 질량 m, 방향 d, 속력 s 격자의 번호는 1~N 1번 행은 N번과 연결/ 1번 열은 N번 열과 연결 파이어볼은 8개의 방향을 가짐 파이어볼은 다음과 같이 이동한다. 7.1 자신의 방향 d로 속력 s 만큼 이동 7.2 이동이 끝난 뒤, 2개 이상의 파이어볼이 같은 칸에 있으면 다음 일이 일어남 - 같은 칸의 파이어볼은 모두 하나로 합쳐짐 - 파이어볼이 4개로 나누어짐 - 나누어진 파이어볼의 질량, 속력, 방향이 바뀜 - 질량이 0인 파이어볼은 소멸 K번 명령 후, 남아있는 파이어볼의 질량의 합 구하기 전체..
2020.10.29 -
BOJ 16236번 아기 상어 문제 자바(java) 풀이 랭크 : 골드5 백준 16236번 아기 상어 문제 정리 NxN 크기의 공간 M마리의 물고기 아기 상어 1마리 한 칸에는 물고기가 최대 1마리 존재(없거나 1마리) 초기 아기상어의 크기는 2 1초에 상하좌우 한 칸씩 이동 자신의 크기보다 큰 물고기가 있는 칸 제외 모든 칸 지나갈 수 있음 자기보다 작은 물고기 먹을 수 있음, 크기 같으면 지나만 갈 수 있음 이동 결정 알고리즘 더 이상 먹을 수 있는 물고기가 없으면 엄마에게 도움을 청함 먹을 수 있는 물고기가 1마리면 그 물고기를 먹으러 감 먹을 수 있는 물고기가 1마리 보다 많다면, 거리가 가장 가까운 물고기를 먹으러 감 거리: 아기 상어가 있는 칸에서 물고기가 있는 칸으로 이동할 때, 지나야하는 ..
[BOJ] 삼성 sw 역량 테스트 기출 :: 16236번 아기 상어 (java)BOJ 16236번 아기 상어 문제 자바(java) 풀이 랭크 : 골드5 백준 16236번 아기 상어 문제 정리 NxN 크기의 공간 M마리의 물고기 아기 상어 1마리 한 칸에는 물고기가 최대 1마리 존재(없거나 1마리) 초기 아기상어의 크기는 2 1초에 상하좌우 한 칸씩 이동 자신의 크기보다 큰 물고기가 있는 칸 제외 모든 칸 지나갈 수 있음 자기보다 작은 물고기 먹을 수 있음, 크기 같으면 지나만 갈 수 있음 이동 결정 알고리즘 더 이상 먹을 수 있는 물고기가 없으면 엄마에게 도움을 청함 먹을 수 있는 물고기가 1마리면 그 물고기를 먹으러 감 먹을 수 있는 물고기가 1마리 보다 많다면, 거리가 가장 가까운 물고기를 먹으러 감 거리: 아기 상어가 있는 칸에서 물고기가 있는 칸으로 이동할 때, 지나야하는 ..
2020.10.22 -
BOJ 17144 미세먼지 안녕! 자바(java) 풀이 랭크 : 골드5 백준 17144 미세먼지 안녕! 문제 정리 집의 크기 RxC 공기 청정기는 항상 1번 열에 설치, 두 행을 차지한다. 공기청정기가 설치되어 있지 않은 칸에는 미세먼지가 있다. 1초 동안 다음고 같은 일이 일어난다. ㄱ. 미세먼지 확산. 미세먼지가 있는 모든 칸에서 동시에 일어남 네 방향으로 확산 공기청정기가 있거나 칸이 없으면 확산 X 확산 되는 양은 A(r,c) / 5 (소수점 버림) (r,c)에 남은 미세먼지의 양은 A(r,c) - ( A(r,c)/5 )x 확산된 방향의 개수 ㄴ. 공기 청정기 작동 위쪽 공기 청정기의 바람은 반시계 방향 순환, 아래쪽 공기청정기의 바람은 시계방향 순환 바람이 불면 미세먼지가 바람의 방향대로 모두 ..
[BOJ] 삼성 sw 역량 테스트 기출 :: 17144번 미세먼지 안녕! (java)BOJ 17144 미세먼지 안녕! 자바(java) 풀이 랭크 : 골드5 백준 17144 미세먼지 안녕! 문제 정리 집의 크기 RxC 공기 청정기는 항상 1번 열에 설치, 두 행을 차지한다. 공기청정기가 설치되어 있지 않은 칸에는 미세먼지가 있다. 1초 동안 다음고 같은 일이 일어난다. ㄱ. 미세먼지 확산. 미세먼지가 있는 모든 칸에서 동시에 일어남 네 방향으로 확산 공기청정기가 있거나 칸이 없으면 확산 X 확산 되는 양은 A(r,c) / 5 (소수점 버림) (r,c)에 남은 미세먼지의 양은 A(r,c) - ( A(r,c)/5 )x 확산된 방향의 개수 ㄴ. 공기 청정기 작동 위쪽 공기 청정기의 바람은 반시계 방향 순환, 아래쪽 공기청정기의 바람은 시계방향 순환 바람이 불면 미세먼지가 바람의 방향대로 모두 ..
2020.10.21