Java

Algorithms/백준

[백준] '색종이' - Java

가로, 세로의 크기가 각각 100인 정사각형 모양의 흰색 도화지가 있다. 이 도화지 위에 가로, 세로의 크기가 각각 10인 정사각형 모양의 검은색 색종이를 색종이의 변과 도화지의 변이 평행하도록 붙인다. 이러한 방식으로 색종이를 한 장 또는 여러 장 붙인 후 색종이가 붙은 검은 영역의 넓이를 구하는 프로그램을 작성하시오. 검은 영역의 넓이를 구하는 것이므로 겹치는 부분은 차감해주어야한다. Try 1) // 색종이의 수 int N = Integer.parseInt(br.readLine()); int[][] arr = new int[N][2]; // INPUT : 2차원배열과 각 좌표 for(int i = 0; i < N; i++) { st = new StringTokenizer(br.readLine());..

Algorithms/백준

[백준] '최댓값' - Java

9×9 격자판에 쓰여진 81개의 자연수 또는 0이 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 행 몇 열에 위치한 수인지 구하는 프로그램을 작성하시오. 모든 인덱스를 돌며 max값을 찾아내야한다. 1열부터 찾아야하므로 x와 y 변수에 i + 1, j + 1을 각각 해준다. Answer 1) for(int i = 0; i = max) { max = arr[i][j]; // 1열부터 시작된다고 고지되어있으므로 +1을 해줌 x = i + 1; y = j + 1; } } } if(arr[i][j] >= max) 조건문으로 max값을 쉽게 찾아낼 수 있었다. import ..

Algorithms/백준

[백준] '행렬 덧셈' - Java

N*M크기의 두 행렬 A와 B가 주어졌을 때, 두 행렬을 더하는 프로그램을 작성하시오. N * M 크기의 행렬 두개가 주어지고 행렬의 덧셈을 수행해야한다. 각 인덱스에 맞게 더한 후 반환해야했다. Answer 1) for(int i = 0; i = N) { for(int j = 0; j < M; j++) { B[k][j] = Integer.parseInt(st.nextToken()); } k++; } // 2차원배열 A에 입력받기 else { for(int j = 0; j < M; j++) { A[i][j] = Integer.pa..

Algorithms/백준

[백준] '나이순 정렬' - Java

온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 작성하시오. >> 나이가 같으면 가입한 순(입력한 순)으로 출력 이또한 사전과 같은 프로그램을 만드는 문제였다. 1181번_단어정렬 문제와 유사하다. Try 1) BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); HashMap dic = new HashMap(); int N = Integer.parseInt(br.readLine()); String[] input2 = new String[N]; int max = 0; for(int i = 0;..

Algorithms/백준

[백준] '단어 정렬' - Java

알파벳 소문자로 이루어진 N개의 단어가 들어오면 아래와 같은 조건에 따라 정렬하는 프로그램을 작성하시오. 길이가 짧은 것부터 길이가 같으면 사전 순으로 단, 중복된 단어는 하나만 남기고 제거해야 한다. 사전 프로그램을 만드는 문제이다. 대신 조건이 두가지있는데, 마냥 내림차순, 오름차순 정렬을 하는 것이 아닌 1. 길이가 짧은 것부터 우선순위 2. 그 후 길이가 같으면 사전순으로 조건을 어떻게 맞춰야할지 막막하기도 했다. Try 1) HashSet remove = new HashSet(); List input = new ArrayList(); // 1. 중복제거를 위해 HashSet에 값을 대입 for(int i = 0; i < N; i++) { remove.add(br.readLine()); } // ..

Algorithms/백준

[백준] '소트인사이드' - Java

배열을 정렬하는 것은 쉽다. 수가 주어지면, 그 수의 각 자리수를 내림차순으로 정렬해보자. 문제에서도 말했듯 배열을 정렬하는 것은 Arrays.sort() 메서드 사용이나, 변수사용으로 for문을 통해 정렬하는 방법 등 쉬울 수 있지만, 숫자가 주어지면 그 숫자를 각 토큰으로 판단하여 내림차순 정렬한 값을 반환해야한다. Answer 1) for(int i = 0; i < N.length(); i++) { sort[i] = N.charAt(i) - '0'; } Integer[] temp = Arrays.stream(sort).boxed().toArray(Integer[]::new); Arrays.sort(temp, Collections.reverseOrder()); String answer = ""; fo..

Algorithms/프로그래머스

[프로그래머스] '문자열 밀기' - Java

문자열 "hello"에서 각 문자를 오른쪽으로 한 칸씩 밀고 마지막 문자는 맨 앞으로 이동시키면 "ohell"이 됩니다. 이것을 문자열을 민다고 정의한다면 문자열 A와 B가 매개변수로 주어질 때, A를 밀어서 B가 될 수 있다면 밀어야 하는 최소 횟수를 return하고 밀어서 B가 될 수 없으면 -1을 return 하도록 solution 함수를 완성해보세요. 문자열 밀기라고 한다면, 배열에서나 리스트 등의 자료구조에서 특정 메서드를 통해 쉽게 해결할 수 있지만, 이 문제에서는 String만 주어졌을때 해결할 방법을 찾는 것이다. Solution 1) 다만 두 문자열이 주어지고, A를 기준으로 B문자열은 얼마나 이동했는지 (오른쪽으로만 밀게됨) 를 판단한다. for(int i = 0; i < A.lengt..

Algorithms/프로그래머스

[프로그래머스] '특이한 정렬' - Java

정수 n을 기준으로 n과 가까운 수부터 정렬하려고 합니다. 이때 n으로부터의 거리가 같다면 더 큰 수를 앞에 오도록 배치합니다. 정수가 담긴 배열 numlist와 정수 n이 주어질 때 numlist의 원소를 n으로부터 가까운 순서대로 정렬한 배열을 ( = 각 숫자에서 n을 뺀 절대값) return하도록 solution 함수를 완성해주세요. n으로부터 가까운 순서대로 정렬한 배열 ( = 각 숫자에서 n을 뺀 절대값) 기준 값 N이 주어지면 그 값을 기준으로 가까운 순으로 "순위"를 매겨 return해야한다. 이 또한 Search(탐색)문제 인 것 같았다. Try 1) int[] answer = {}; List temp = new ArrayList(); // numlist에서 n이 속하는 인덱스를 찾는다. ..

Algorithms/프로그래머스

[프로그래머스] '로그인 성공?' - Java

머쓱이는 프로그래머스에 로그인하려고 합니다. 머쓱이가 입력한 아이디와 패스워드가 담긴 배열 id_pw와 회원들의 정보가 담긴 2차원 배열 db가 주어질 때, 다음과 같이 로그인 성공, 실패에 따른 메시지를 return하도록 solution 함수를 완성해주세요. 웹개발이나 실제 홈페이지에서 쓰일 듯한 로그인 시스템은 아니더라도 간접적으로 데이터가 어떻게 담기는지 알 수 있는 문제일 것 같았다. Try 1) String answer = ""; for(int i = 0; i < db.length; i++) { String id = db[i][0]; String pw = db[i][1]; if(id_pw[0].equals(id)) { // 아이디 / 패스워드 모두 일치 = 로그인 성공 if(id_pw[1].eq..

LEFT
'Java' 태그의 글 목록 (3 Page)