본문 바로가기

JAVA 기본/코딩테스트 문제

(4)
프로그래머스-모두 0으로 만들기 시행착오 1 -> 그래프를 행렬그래프를 통해서 풀어보자 class Solution { static int count = 0; public long solution(int[] a, int[][] edges) { int[][] map = new int[a.length][a.length]; for(int i = 0 ; i < edges.length ; i++) { map[edges[i][0]][edges[i][1]] = 1; map[edges[i][1]][edges[i][0]] = 1; } for(int i = 0 ; i node 의 생성을 한번만 가능하도록 처리하자 2.행렬 그래프는 사용하지 말자 시간초과가 엄청난다 다음 방식은 어떤 방식으로 해야하나 import java.util.*; class Solut..
프로그래머스-등굣길 문제 : 계속되는 폭우로 일부 지역이 물에 잠겼습니다. 물에 잠기지 않은 지역을 통해 학교를 가려고 합니다. 집에서 학교까지 가는 길은 m x n 크기의 격자모양으로 나타낼 수 있습니다. 아래 그림은 m = 4, n = 3 인 경우입니다. 가장 왼쪽 위, 즉 집이 있는 곳의 좌표는 (1, 1)로 나타내고 가장 오른쪽 아래, 즉 학교가 있는 곳의 좌표는 (m, n)으로 나타냅니다. 격자의 크기 m, n과 물이 잠긴 지역의 좌표를 담은 2차원 배열 puddles이 매개변수로 주어집니다. 오른쪽과 아래쪽으로만 움직여 집에서 학교까지 갈 수 있는 최단경로의 개수를 1,000,000,007로 나눈 나머지를 return 하도록 solution 함수를 작성해주세요. key : 웅덩이를 갈 수 없는 길, 즉 쓰레기 값..
프로그래머스-최댓값과 최솟값 최대 최소는 정렬로 하는게 깔끔할 것 같았다 key : string 을 어떻게 나눌까, 최대 최소는 어떻게 구하지? stream 을 이용해서 간단히 해결 source : import java.util.*; import java.util.stream.Collectors; class Solution { public String solution(String s) { List result = Arrays.stream(s.split(" ")) .map(i -> Integer.valueOf(i)) .sorted() .collect(Collectors.toList()); return result.get(0) + " " + result.get(result.size()-1); } }
프로그래머스-나머지가 1이 되는 수 찾기 문제 : 숫자가 들어왔을 떄, 나머지가 1이 되는 가장 작은 자연수를 구하시오 해결법 : for loop, 짝수 key : 나머지가 1이 되는 수 라는 말은, 결국 들어온 숫자 n 의 n-1 이 나누어 떨어지는 수를 찾으면 된다 그 외의 홀수에서 찾으면 되므로 2씩 증가한다 class Solution { public int solution(int n) { int answer = n-1; if(answer % 2 == 0 ) return 2; for(int p = 3 ; p < answer ; p += 2){ if(answer % p == 0) { return p; } } return answer; } }