알고리즘52 P5525. IOIOI 문제: https://www.acmicpc.net/problem/5525 5525번: IOIOI N+1개의 I와 N개의 O로 이루어져 있으면, I와 O이 교대로 나오는 문자열을 PN이라고 한다. P1 IOI P2 IOIOI P3 IOIOIOI PN IOIOI...OI (O가 N개) I와 O로만 이루어진 문자열 S와 정수 N이 주어졌을 때, S안에 PN이 몇 www.acmicpc.net 설명 50점 풀이 첫번째 풀이는 부분 문자열(P)를 만들고, I와 O로만 이루어진 문자열(S)와 비교하였다. 이 경우에 제한 조건에 걸려서(시간초과로 예상) 50점 풀이에 그쳤다. import java.io.BufferedReader; import java.io.FileInputStream; import java.io.IO.. 2023. 8. 24. P1389. 케빈 베이컨의 6단계 법칙 - 문제: https://www.acmicpc.net/problem/1389 1389번: 케빈 베이컨의 6단계 법칙 첫째 줄에 유저의 수 N (2 ≤ N ≤ 100)과 친구 관계의 수 M (1 ≤ M ≤ 5,000)이 주어진다. 둘째 줄부터 M개의 줄에는 친구 관계가 주어진다. 친구 관계는 A와 B로 이루어져 있으며, A와 B가 친구라는 뜻 www.acmicpc.net 설명 1. 모든 정점사이의 최단거리를 구한다. 2차원 배열의 모든 값을 INF로 초기화하고, (1,1), (2,2), ... (i,i)인 값을 0으로 초기화한다. 2. 간선은 양방향으로 초기화한다. arr[1][3] = arr[3][1] = 1 3. 플로이드 와샬 알고리즘을 실행하여, 최단 경로를 찾는다. arr[i][j] > arr[i].. 2023. 8. 24. [☁️ 구름톤 챌린지] 2주차 학습일지 - 1 문제 6. 문자열 나누기 이번 문제는 각 단계마다 해당 자료형을 어떻게 사용하면 좋을지 생각하면 좋을 것 같다. import java.io.*; import java.util.*; import java.lang.*; class Main { static int N; static String S; public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); N = Integer.parseInt(br.readLine()); S = br.readLine(); int result = 0; // 나올 수 있는 조합 리스트 List wordLi.. 2023. 8. 23. [☁️ 구름톤 챌린지] 1주차 학습일지 - 2 5일차 미션: 이진수 정렬 10진수를 2진수로 바꾸고 다차원 정렬하여 문제를 풀이한다. 나의 풀이 import java.io.*; import java.util.*; class Main { static int N, K; public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String[] s = br.readLine().split(" "); N = Integer.parseInt(s[0]); K = Integer.parseInt(s[1]); // 2차원 배열로 10진수와 2진수를 같이 정렬한다. String[] s_number.. 2023. 8. 20. [☁️ 구름톤 챌린지] 1주차 학습일지 - 1 정글 나만무까지 끝나고 이제 취준이 시작되었다.(더 본격적인 정글 시작!) 😱 무엇부터 하면 좋을까 하다가 알고리즘 공부를 다시 시작한다... 마침 구름톤 챌린지라는 좋은 프로그램이 있길래 하나씩 풀이하면서 문법들을 다시 공부해보겠다. +) 학습일지를 꾸준히 작성하면 네이버 페이를 준다는 사실! 1일차 미션: 운동 중독 플레이어 수식에 따라 결과를 계산한다. 이때 소수점을 잘 처리하는 것이 중요하다. java에서 소수점 계산을 사용하려면 double 형을 사용한다. 나의 풀이 import java.io.*; import java.util.*; class Main { static int w, r; public static void main(String[] args) throws Exception { Buf.. 2023. 8. 18. P1107. 리모컨 문제: https://www.acmicpc.net/problem/1107 1107번: 리모컨 첫째 줄에 수빈이가 이동하려고 하는 채널 N (0 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 고장난 버튼의 개수 M (0 ≤ M ≤ 10)이 주어진다. 고장난 버튼이 있는 경우에는 셋째 줄에는 고장난 버튼 www.acmicpc.net 설명 (이동하려고하는 채널 번호-현재 위치) 절댓값을 계산하여 초기값을 지정한다. 0부터 999999까지 이동하면서 도달할 수 있는 값인지 확인한다.(자릿수에 broken 숫자가 있는지 없는지 확인한다.) 자릿수합(이동하면서 하나씩 누르니까) + (+, - 버튼만으로 도달할 수 있는 횟수) 를 계산해서 더 작은 값으로 갱신한다. 도달 여부 확인 확인하는 값이 0이라면 -> .. 2023. 6. 27. 프로그래머스: 공원 산책(lv1) https://school.programmers.co.kr/learn/courses/30/lessons/172928 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 설명 단순 구현 문제인데 생각했던 것보다 시간을 매우 많이 잡아먹어서 정리한다. 주의해야할 점은 산책할 때, 점프해서 가는게 아니라 해당 지점까지 한칸씩 이동하면서 간다. 따라서 가는 도중에 장애물을 만나면 안된다. 코드 import java.util.*; class Solution { static int[] move = new int[2]; static int[][] map; static in.. 2023. 6. 17. 프로그래머스: 요격 시스템(lv2) - 문제: https://school.programmers.co.kr/learn/courses/30/lessons/181188 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 설명 끝나는 구간을 오름차순으로 정렬하고, 범위에 대해 가장 뒤쪽에 요격하여 범위의 최대를 확인한다. target 구간을 순회하면서, last가 두 구간 사이라면 무시해도 되므로 다음 구간으로 넘어간다. 왜? 시작 지점 정렬은 필요하지 않는가 어차피! target 구간은 순회하면서 last가 두 구간 사이인지 아닌지만 확인하기 때문이다. 우리의 목표는 last(현재 요격 범위의 마지막.. 2023. 6. 12. P18405. 경쟁적 전염 - 문제: https://www.acmicpc.net/problem/18405 18405번: 경쟁적 전염 첫째 줄에 자연수 N, K가 공백을 기준으로 구분되어 주어진다. (1 ≤ N ≤ 200, 1 ≤ K ≤ 1,000) 둘째 줄부터 N개의 줄에 걸쳐서 시험관의 정보가 주어진다. 각 행은 N개의 원소로 구성되며, 해당 위치 www.acmicpc.net 설명 이전에 풀었던 토마토와 빙산과 비슷한 느낌을 받았다. 다만 본인은 문제에 나온 날짜만큼 반복문을 돌려, 총 3중 for문을 마주했는데 그렇게 풀지 않아도 된다. ✔️ 본인 문제 해결 방법 1. 매초마다 for문을 돌면서 방문하지 않았고, 0이 아닌 바이러스들을 queue에 담는다. 2. queue를 비우면서, 방문할 수 있는 지점을 확인한다. 아직 채.. 2023. 5. 4. 이전 1 2 3 4 5 6 다음