본문 바로가기
728x90

programming/알고리즘 풀이33

[SWEA] 2805. 농작물 수확하기 [SWEA] 2805. 농작물 수확하기 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com [입력] 가장 첫 줄에는 테스트 케이스의 개수 T가 주어지고, 그 아래로 각 테스트 케이스가 주어진다. 각 테스트 케이스에는 농장의 크기 N과 농장 내 농작물의 가치가 주어진다. [출력] 각 줄은 '#t'로 시작하고, 공백으로 농장의 규칙에 따라 얻을 수 있는 수익을 출력한다. (t는 테스트 케이스의 번호를 의미하며 1부터 시작한다.) [풀이] 우선 홀수크기의 배열에 마름모꼴을 선택하게 되는 규칙을 찾았다. 첫행은 가운데 열 한칸으로 시작하고 그 이후로 계속 가운데 열을 기준으로 두칸씩 더해진다. 그리고 가운데 행에 다다르면.. 2021. 8. 4.
[leetcode] 283. Move Zeroes 배열의 0을 모두 뒤로 보내는 문제이다. class Solution { public void moveZeroes(int[] arr) { int n = arr.length; int idx = 0; for(int i = 0; i < n; i++) { if(arr[i] != 0) { arr[idx] = arr[i]; idx++; } } for(int i = idx; i < n; i++) { arr[idx] = 0; idx++; } } } 별도의 result배열을 만들어서 사용하면 더 수월하지만, 조건에 주어진 배열만을 활용하라고 했기 때문에 배열에서 0이 아닌것을 그 배열 그대로 앞에서부터 채워나간다. 그리고 나머지 남은 배열칸에 0을 넣는다. 그러면 초기 배열이 완전히 바뀐다. 2021. 6. 29.
[leetcode] 66. Plus One Plus One - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 이 문제는 약간 어려웠다. 앞선 문제들과 똑같이 난이도는 Easy인데 처음에 아예 Integer.parseInt해서 변환 후 +1을 하고 다시 그걸 배열에 담아주었다. (배열에 담아줄때 % 10해줘서 나머지를 뒷배열부터 넣어주었다.) 그런데 이 방법이 계속 에러가 뜨는 것이다. int[] test = {9,8,7,6,5,4,3,2,1,0}; 이러한 배열을 넣어줬을 때 int의 32bit 범위가 넘.. 2021. 6. 22.
[leetcode] 482. License Key Formatting License Key Formatting - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 처음에 문제를 잘못 이해했다. input : "2-4A0r7-4k" , 4 일 경우 "24A0-R74K"이 나와야 하는데, 나는 첫번째 그룹을 제외하고 그 이후를 k로 묶으라는 말로 들었다. 그래서 "2-4A0R-74K"가 나와버렸다. class Solution { public String licenseKeyFormatting(String s, int k) { String.. 2021. 6. 22.
[leetcode] 771. Jewels and Stones Jewels and Stones - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com a가 stones에 몇개 있는지, A가 stones에 몇개 있는지 찾는 문제다. 대소문자를 다르게 취급해주기때문에 별로 어렵지 않다. 처음에 문제를 이해하기 약간 어려울 수 있다. class Solution { public int numJewelsInStones(String jewels, String stones) { int result = 0; String[] J = jewels.. 2021. 6. 21.
[leetcode] 929. Unique Email Addresses Unique Email Addresses - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 간단히 말하자면, 아이디의 .이 있어도 없어도 같은 아이디로 생각하고 +이후부터는 아이디를 무시하여 고유한 이메일의 종류 갯수를 출력하는 문제이다. class Solution { public int numUniqueEmails(String[] emails) { HashSet R = new HashSet(); for(int i = 0; i < emails.length; i+.. 2021. 6. 21.
[백준(Baekjoon)/JAVA] 10828. 스택 시간초과가 나서 string builder를 이용해 한번에 모아서 출력을 해주었다. 줄바꿈표시도 해주었다. 일반적인 스택문제라 알고리즘은 어렵지 않았다. 자바로 풀 때는 c로 풀 때 보다 시간초과가 많이 나는 것 같다. import java.util.Scanner; public class bj10828 { static int[] stack; static int top = -1; public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); stack = new int[n]; StringBuilder sb = new StringBuilder(); for(int i = 0; i < n; i++.. 2021. 2. 14.
[백준(Baekjoon)/JAVA] 2606. 바이러스 연결된 컴퓨터를 그래프라고 생각하고 이 그래프를 인접행렬로 나타내었다. 너비우선탐색(BFS) 연습문제이다. insertVertex메소드는 두 점사이의 edge를 표시하여 그래프를 만든다. visited[]는 점의 방문여부를 표시한다. bfs에서 처음에 방문했다는 표시로 true를 저장하고, 방문하지 않았을 경우에만 재귀를 불러들여 다시 방문 표시를 한다. 1부터 시작하는데 1컴퓨터는 바이러스에 감염된 컴퓨터에 포함시키지 않는다. 따라서 sum - 1이 답이 된다. package bj; import java.util.Scanner; public class bj2606_2 { static int[][] V; static boolean[] visited; static int sum = 0; public sta.. 2021. 1. 16.
[백준(Baekjoon)/JAVA] 2630. 색종이 만들기 2630번: 색종이 만들기 첫째 줄에는 전체 종이의 한 변의 길이 N이 주어져 있다. N은 2, 4, 8, 16, 32, 64, 128 중 하나이다. 색종이의 각 가로줄의 정사각형칸들의 색이 윗줄부터 차례로 둘째 줄부터 마지막 줄까지 주어진다. www.acmicpc.net 문제가 굉장히 길어서 링크 첨부. 이건 재귀함수를 이용해 풀어야 하는 문제다. 정사각형(근데 3*3은 안됨,2의 제곱수로만 됨)형태로 되어있는걸 세어야 함. 그게 색종이의 갯수임. 1로 표시된건 파란 색종이이고, 0으로 표시된건 하얀색종이이다. 4분할을 해서 거기서 파란정사각형과 하얀정사각형을 찾고 둘 다 없을 경우 다시 그것을 4분할하여 쪼개면서 찾아나간다. 큰 정사각형이 없어서 계속 쪼개다 보면 1*1인 정사각형까지 오게되고 거기서.. 2021. 1. 10.
728x90