728x90 Algorithm88 백준 14502 자바 https://www.acmicpc.net/problem/14502 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크 www.acmicpc.net 위 문제 같은 경우 벽을 3개를 세울 수 있다. 또한 N,M의 범위가 매우 작다. 그래서 나는 dfs 와 bfs를 하나씩 이용해서 풀어야 된다는 생각을 했다. 맨처음에 map 을 입력받는다. 이 맵과 벽이 생길때마다 해당 맵을 clone()을 통해 복사해서 사용을 해야한다.먼저 벽을 세우는 곳을 dfs로 푼다. 그리고 벽이 3개가 됐을 경우에는 bfs로 넘어가서 바이러스가 갈 수 있는 모든 곳을 2로 변경한다.. 2024. 1. 27. 백준 4949 자바 https://www.acmicpc.net/problem/4949 4949번: 균형잡힌 세상 각 문자열은 마지막 글자를 제외하고 영문 알파벳, 공백, 소괄호("( )"), 대괄호("[ ]")로 이루어져 있으며, 온점(".")으로 끝나고, 길이는 100글자보다 작거나 같다. 입력의 종료조건으로 맨 마지막에 www.acmicpc.net 무엇인가 짝짓는 문제 같은 경우 스택으로 풀어야 된다는 생각을 했다. 그래서 스택을 이용해서 문제를 해결했다. 스택을 이용해 괄호를 넣고, 해당 문제에서 ) ] 이러한 괄호가 들어왔을 때 스택이 비어있거나, 스택에 최상단에 있는 문자가 짝을 지을 수 없는 괄호 일경우 해당 문자열은 균형 잡힌 문자열이 아닌 것을 바로 알 수 있기 때문에 더 이상 확인하지 않고 바로 no를 출력.. 2024. 1. 26. 백준 1620 자바 https://www.acmicpc.net/problem/1620 1620번: 나는야 포켓몬 마스터 이다솜 첫째 줄에는 도감에 수록되어 있는 포켓몬의 개수 N이랑 내가 맞춰야 하는 문제의 개수 M이 주어져. N과 M은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수인데, 자연수가 뭔지는 알지? 모르면 www.acmicpc.net 두개의 HashMap을 이용하면 편하다. 하나는 key값이 포켓몬 이름이고 value가 숫자인 HashMap을 만들고 다른 하나는 key값이 숫자이고 Value값이 포켓몬 이름인 HashMap을 만든다. 입력한 글자의 첫글자를 기준으로 숫자인지 아닌지 확인한다. 만약 숫자일경우 숫자에 대응하는 포켓몬이름을 가져오면 되고 숫자가 아닐경우 포켓몬이름에 맞는 숫자를 가져오면.. 2024. 1. 9. 백준 9996 자바 https://www.acmicpc.net/problem/9996 9996번: 한국이 그리울 땐 서버에 접속하지 총 N개의 줄에 걸쳐서, 입력으로 주어진 i번째 파일 이름이 패턴과 일치하면 "DA", 일치하지 않으면 "NE"를 출력한다. 참고로, "DA"는 크로아티어어로 "YES"를, "NE"는 "NO"를 의미한다. www.acmicpc.net *를 기준으로 문자를 나눠서 저장한다.( * 앞부분을 front 뒷부분을 back으로 저장) 문제에서 NE가 뜰 경우의 수부터 생각을 한다. 첫 번째로 패턴에서 *을 제외한 길이보다 파일 이름이 더 짧으면 NE가 출력이 된다. 또 front와 * 앞까지의 글자가 다를 경우 NE를 출력하고 패턴에서 * 뒤부터 back까지 글자가 다를 경우 NE가 출력이 된다. 위 .. 2024. 1. 9. 백준 11655 자바 https://www.acmicpc.net/problem/11655 11655번: ROT13 첫째 줄에 알파벳 대문자, 소문자, 공백, 숫자로만 이루어진 문자열 S가 주어진다. S의 길이는 100을 넘지 않는다. www.acmicpc.net 문자열을 받고 StringBuilder를 사용한다. 그 이후 Character.isLetter()을 사용해서 문자인니 확인하고 문자가 아닐 경우 넘긴다. 문자이면 해당 문자를 정수화 시킨 후에 13을 더한다. 이후 해당 문자가 대문자일 경우 90보다 크면 26을 빼고 소문자면 122보다 클경우 26을 빼준다. 그 후에 다시 숫자를 문자로 변환해서 StringBuilder에 append를 통해서 값을 넣는다. import java.io.*; public class Ma.. 2024. 1. 3. 백준 1159 자바 https://www.acmicpc.net/problem/1159 1159번: 농구 경기 상근이는 농구의 세계에서 점차 영향력을 넓혀가고 있다. 처음에 그는 농구 경기를 좋아하는 사람이었다. 농구에 대한 열정은 그를 막을 수 없었고, 결국 상근이는 농구장을 청소하는 일을 시작 www.acmicpc.net 알파벳 배열을 만들고, 입력받은 이름들의 첫 글자를 숫자로 변환한다. 이 숫자를 97을 뺀 인덱스 값의 배열을 하나씩 증가시킨다. 그 후 배열을 돌려서 값이 5 이상인 값만 출력을 한다. 만약 5 이상이 없으면, PREDAJA를 출력한다. import java.io.*; public class Main { public static void main(String[] args)throws IOExceptio.. 2024. 1. 3. 백준 10988 자바 https://www.acmicpc.net/problem/10988 10988번: 팰린드롬인지 확인하기 첫째 줄에 단어가 주어진다. 단어의 길이는 1보다 크거나 같고, 100보다 작거나 같으며, 알파벳 소문자로만 이루어져 있다. www.acmicpc.net 위 문제 같은 경우에는 문자열 길이의 반만큼 반복문을 돌려서 같은지 비교하면 된다. 이때 check하는 부분을 메서드로 분리해서 개발하는게 더 좋다. 하나라도 다를경우 바로 0을 리턴해서 더이상 같은지 확인을 안해도 된다. import java.io.*; public class Main { public static void main(String[] args)throws IOException { BufferedReader br = new Buffered.. 2024. 1. 3. 백준2979 자바 https://www.acmicpc.net/problem/2979 2979번: 트럭 주차 첫째 줄에 문제에서 설명한 주차 요금 A, B, C가 주어진다. (1 ≤ C ≤ B ≤ A ≤ 100) 다음 세 개 줄에는 두 정수가 주어진다. 이 정수는 상근이가 가지고 있는 트럭이 주차장에 도착한 시간과 주차장 www.acmicpc.net 위 문제는 배열을 이용해서 겹치는 구간을 하나씩 증가시킨다. 문제에서 입력으로 주어진 시간은 최대 100이므로 배열의 크기는 100으로 설정한다. 증가를 시킨 이후에 for문으로 배열의 값이 0,1,2,3 인지 확인해서 입력에 맞게끔 연산을 진행하면 된다. import java.io.*; import java.util.*; public class Main { public sta.. 2024. 1. 3. 백준 10808 자바 https://www.acmicpc.net/problem/10808 10808번: 알파벳 개수 단어에 포함되어 있는 a의 개수, b의 개수, …, z의 개수를 공백으로 구분해서 출력한다. www.acmicpc.net 위 문제 같은 경우 알파벳 개수의 크기인 배열을 만든후에 입력한 문자열에서 문자를 하나씩 가져와서 해당 문자열의 아스키코드 숫자에서 97을 뺀 값의 배열 index를 증가시키고, 해당 배열을 출력하면 된다. import java.util.*; import java.io.*; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new .. 2024. 1. 3. 백준 2309 자바 https://www.acmicpc.net/problem/2309 2309번: 일곱 난쟁이 아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다. www.acmicpc.net 위 문제 같은 경우 9명 중에 7명을 뽑아야 하는 생각으로 접근해서 문제풀 수 있다. 그럴 경우 DFS를 이용해서 조합을 구현해서 문제를 풀 수 있으나, 더 쉬운 방식으로 9명 중에 2명을 빼는 방식으로도 문제를 풀 수 있다. 반복문 2개를 이용해서 2명을 선택해서 전체 합에서 2명의 합을 뺐을때 100일 경우 출력을 하면 된다. import java.util.*; import java.io.*; publ.. 2024. 1. 3. 코드트리 인증용 게시글 코드트리 아이디: another0306 2023. 8. 31. [이것이 코딩 테스트다] 만들 수 없는 금액 - Python 개인적으로 지금의 나에게 좀 어려웠다. (어려웠다기보다는 어떻게 풀어야 하는지를 모르곘다는게 맞는거일수도..) 이문제를 어려워하면 아직 그리디 문제를 많이 접하지 않는거라고 하는데.. 그런거 같다. 이 문제는 target을 1로 두고 target이 입력값을 정렬했을때 첫번째 부터 시작해서 모든 값들과 비교를 한다 만약 target값이 작으면 바로 반복문을 끝낸 후에 target을 출력하면 된다. 만약 target이 크다면 해당 값에 비교한 리스트의 값을 더해준다. (target은 해당 값 -1까지 만들 수 있다는 말이다) 1,2,3 입력값이 주어졌을때 1 2 3 4 ( 1 + 3) 5 ( 2 + 3) 6 ( 1 + 2 + 3) 까지 만들 수 있다. 이때 target 값은 처음은 항상 1이고 이후 1+1.. 2023. 8. 24. 이전 1 2 3 4 5 6 ··· 8 다음 728x90