Algorithm
-
BOJ) 피자알고리즘/백준 2020. 6. 11. 17:15
피자 3213번: 피자 문제 오늘은 상근이의 생일이다. 상근이는 친구들과 피자를 먹으러 갔다. 상근이의 친구들은 매우 어려서 피자 한 판을 먹을 수 없다. 하지만, 각 친구들은 자신이 먹을 수 있는 피자의 양을 알�� www.acmicpc.net 풀이 스스로 풀지 못했고, 질문 게시판의 로직을 참고했다. 처음에는 왜 예자가 3판인지 문제 이해가 제대로 되지 않았고, 이후에도 1/4과 3/4만 묶는 등 계속해서 문제를 제대로 이해하지 못했다. 문제의 조건은 1/2, 1/4, 3/4가 한 조각이라는 조건이 있다. 그렇다면 남은 1/2는 1/4 2개로 각각 나눌 수 있다는 것이고, 1/4와 1/2를 합해서 3/4로 줄 수 없다는 말이 된다(양은 맞지만 두조각이기 때문에). 그리고 입력을 받으면서 조건을 처리하..
-
BOJ) 좋은 대회알고리즘/백준 2020. 6. 11. 17:05
좋은 대회 14610번: 좋은 대회 첫 줄에 이번 대회의 참가자의 수 N(1 ≤ N ≤ 100)과 문제의 수 M(1 ≤ M ≤ 10)이 주어진다. 다음 N 개의 줄에는 1등부터 N 등까지, i 등 참가자의 맞춘 문제 수 Ki (0 ≤ Ki ≤ M)와 해당 참가자의 1 ~ M번 � www.acmicpc.net 풀이 두번의 로직을 세워서 풀었다. 우선, 공통된 코드는 참가자 수와 문제 수를 받은 후에, 문제 풀이를 담는 배열을 선언해주었다. 각 입력받은 라인마다 푼 문제에 대해 체크를 해주었다. 그리고 문제의 조건에 따라 좋은 대회가 아닌 경우를 판별해주었다. 문제의 조건 1. 모든 참가자가 한 문제 이상을 풀어야 한다. 2. 모든 문제는 한 명 이상의 참가자에게 풀려야 한다. 3. 모든 문제를 푼 참가자는..
-
BOJ) 비트 우정지수알고리즘/백준 2020. 6. 10. 15:55
비트 우정지수 12782번: 비트 우정지수 진홍이는 숫자를 좋아한다. 오늘도 숫자를 가지고 놀던 진홍이는 두 숫자의 비트 우정지수를 구해보았다. 비트 우정지수란, 10진법으로 나타낸 두 정수를 이진수로 나타내었을 때, 두 숫자를 같� www.acmicpc.net 풀이 문제를 풀 방법에 대해 고민에 조금 시간을 들였다. 두 수의 2진수 비트를 갖게 만드는 방법이기 때문에, 하나씩 바꿔나가는 과정이 비합리적이라고 생각이 들었다. 그래서 방법을 고민하다가, 위치가 다른 포지션의 수와 1의 갯수 차이를 통해 풀 수 있지 않을까 하는 생각이 들었다. 좌측과 우측의 2진수 비트에 대해 1의 수를 각각 카운트 해주었고, 서로 다른 포지션인 경우를 담는 변수도 카운트를 진행해주었다. 진행이 끝난 이후에 1의 갯수가 같..
-
BOJ) 도로와 신호등알고리즘/백준 2020. 6. 10. 15:42
도로와 신호등 2980번: 도로와 신호등 문제 상근이는 트럭을 가지고 긴 일직선 도로를 운전하고 있다. 도로에는 신호등이 설치되어 있다. 상근이는 각 신호등에 대해서 빨간 불이 지속되는 시간과 초록 불이 지속되는 시간을 미리 구 www.acmicpc.net 풀이 특별한 알고리즘 없이 구현으로 풀어냈다. 먼저 1초에 1m씩 움직이기 때문에 기본적으로 K초를 이동해야 한다. 이후에 신호등 정보들이 들어오면, 신호등이 빨간불인 경우에 대기하는 시간도 더해주어야 한다. 문제 조건이 처음 시작이 모두 빨간불이기 때문에, 구해주는 식은 쉬웠다. 신호등마다 대기시간을 담는 waitTime을 선언해줘서, 해당 신호등에 도착하는 시간을 구해줬다. 그리고, 도착 시간에 신호등 색을 구분해주었다. (도착시간 %=(R+G) ..
-
BOJ) Crazy_aRcade_Good (크레이지 아케이드)알고리즘/백준 2020. 6. 9. 23:31
Crazy_aRcade_Good 17290번: Crazy_aRcade_Good 크레이지 아케이드를 하면서 폭탄을 피하려고 한다. 게임을 하는 곳은 10×10 크기의 배열로 나타낼 수 있고, 폭탄이 있는 칸은 o, 없는 칸은 x로 나타낸다. 폭탄이 터질 때, 폭탄과 같은 행 또는 �� www.acmicpc.net 풀이 맵을 돌면서 안전 구역을 찾는 기본적인 구현 문제다. 조금 더 수월하게 풀기 위해, 입력받은 map을 char[][]로 저장해주었다. 또한, Bazzi 클래스를 만들어서 좌표와 걸음 수를 저장했다. (넥슨 캐릭터 중에 제일 귀여워서 배찌로 클래스를 만들었다...) 이후, 처음 입력받은 위치 좌표를 Bazzi에 담아 큐에 담고 우선순위 큐에 담아 맵을 탐색한다. (탐색은 상하좌우 4방향) vi..
-
BOJ) 김식당알고리즘/백준 2020. 6. 9. 23:23
김식당 14612번: 김식당 인하대학교 축제를 맞이하여 알고리즘 동아리 CTP에서는 식당을 열기로 하였다. 요리는 세진이가 하게 되었고, 주문을 받는 것은 한솔이가 하게 되었다. 식당의 음식이 너무 맛있어서 주문은 끊� www.acmicpc.net 풀이 sleep을 출력하는 부분에서 조금 시간이 걸렸지만, 오래 걸리지 않고 풀었다. 처음에는 sleep을 모든 명령이 끝난 후에만 출력해줬었는데, 중간에 식당이 쉬고있는 기간에 sleep을 출력해줘야 한다는 것을 알고 고쳤다. 처음에 배열로 할까 생각하다가, 조금 복잡해질 것 같아서 ArrayList를 이용해서 풀었다. 그러다 보니 테이블 number인 m이 필요가 없었다. 로직 1. 주문 수를 입력받는다. 2. 주문에 따라서 order, sort, comp..
-
BOJ) 부분수열의 합 2알고리즘/백준 2020. 6. 3. 23:23
부분수열의 합 2 1208번: 부분수열의 합 2 첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 40, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100,000을 넘지 않는다. www.acmicpc.net 풀이 오늘 문제가 너무 안풀려서 하나만 더 풀어보자 하고 기출문제와 유사한 문제라고해서 풀어봤다. 오랜만에 백준 문제를 풀어서 그런지 어려웠다. 그리고 백준이 바로 코딩하기에 친절하지가 않아서 처음 구조를 잡아나갈 때를 제외하고는 ide힘을 빌려야했다.. ㅠ N개의 정수로 이루어진 배열에서 부분 수열의 합이 S가 되는 경우의 수를 구하는 문제다. N은 40 이하의 수, S는 -1,000,000 ~ 1,00..
-
프로그래머스 Lv.3) 방문 길이알고리즘/프로그래머스 2020. 5. 29. 18:07
Summer/Winter Coding(~2018) 방문 길이 코딩테스트 연습 - 방문 길이 programmers.co.kr 풀이 간단한 시뮬레이션 문제였다. 로봇이 맵 정 중앙에서 시작해서 명령어에 따라 이동하는데, 맵 범위를 벗어나는 명령은 듣지 않는다는 조건이 있다. 움직이면서 처음 간 길이 몇 개인지 세는 문제다. 일단 제일먼저 한 것은 Pos 클래스를 만드는 것. 2차원 배열로 하면 귀찮고 한 라인에 코드가 길어지기 때문이다. 또한 URLD 명령에 따른 이동, Out of index 방지 메소드를 만들었다. 그리고 총 맵의 크기가 11인 것을 고려해보고 계산한 결과 14,xxx가 나오길래 그냥 4차원 배열로 visit 체크를 해주었다. (5,5에서 5,6으로 움직일 때 두 좌표를 이어주기 위해) ..