본문 바로가기

반응형

Java

(376)
[SW아카데미] 1208. [S/W 문제해결 기본] 1일차 - Flatten 한 쪽 벽면에 다음과 같이 노란색 상자들이 쌓여 있다. 높은 곳의 상자를 낮은 곳에 옮기는 방식으로 최고점과 최저점의 간격을 줄이는 작업을 평탄화라고 한다. 평탄화를 모두 수행하고 나면, 가장 높은 곳과 가장 낮은 곳의 차이가 최대 1 이내가 된다. 평탄화 작업을 위해서 상자를 옮기는 작업 횟수에 제한이 걸려있을 때, 제한된 횟수만큼 옮기는 작업을 한 후 최고점과 최저점의 차이를 반환하는 프로그램을 작성하시오. 가장 높은 곳에 있는 상자를 가장 낮은 곳으로 옮기는 작업을 덤프라고 정의한다. 위의 예시에서 제1회 덤프를 수행한 이후 화면은 다음과 같다. A부분의 상자를 가장 낮은 B부분에 덤프하였으며, A대신 A’부분의 상자를 사용해도 무방하다. 다음은 제2회 덤프를 수행한 이후의 화면이다. A’부분의 상..
[SW 아카데미] 1206. [S/W 문제해결 기본] 1일차 - View 강변에 빌딩들이 옆으로 빽빽하게 밀집한 지역이 있다. 이곳에서는 빌딩들이 너무 좌우로 밀집하여, 강에 대한 조망은 모든 세대에서 좋지만 왼쪽 또는 오른쪽 창문을 열었을 때 바로 앞에 옆 건물이 보이는 경우가 허다하였다. 그래서 이 지역에서는 왼쪽과 오른쪽으로 창문을 열었을 때, 양쪽 모두 거리 2 이상의 공간이 확보될 때 조망권이 확보된다고 말한다. 빌딩들에 대한 정보가 주어질 때, 조망권이 확보된 세대의 수를 반환하는 프로그램을 작성하시오. 아래와 같이 강변에 8채의 빌딩이 있을 때, 연두색으로 색칠된 여섯 세대에서는 좌우로 2칸 이상의 공백이 존재하므로 조망권이 확보된다. 따라서 답은 6이 된다. A와 B로 표시된 세대의 경우는 왼쪽 조망은 2칸 이상 확보가 되었지만 오른쪽 조망은 한 칸 밖에 확보가..
[SW 아카데미] 13218. 조별과제 당신은 교수이다. 매주 월요일과 수요일 오전 9시부터 10시 30분까지 진행되는 당신의 수업에는 N명의 수강생이 있다. 당신은 학생들에게 조별과제를 부여하기 위해 학생들을 몇 개의 조로 나누려고 한다. 당신은 한 조가 2명 이하의 학생으로 구성되면 토론이나 업무 배분 등이 제대로 이루어지지 않아 팀워크를 평가할 기회를 박탈당한다고 생각한다. 따라서, 당신은 3명 이상의 학생으로 구성된 조의 수를 최대화하려고 한다. 각 학생은 정확히 한 개의 조에만 속할 수 있다. 학생들을 조로 적당히 나누었을 때, 3명 이상의 학생으로 구성된 조의 수의 최댓값이 얼마인지를 구하는 프로그램을 작성하라. [입력] 첫 번째 줄에 테스트 케이스의 수 T가 주어진다. 각 테스트 케이스는 하나의 줄로 이루어진다. 각 줄에는 학생의..
[SW 아카데미] 13229. 일요일 오늘의 요일을 나타내는 문자열 S가 주어진다. S는 “MON”(월), “TUE”(화), “WED”(수), “THU”(목), “FRI”(금), “SAT”(토), “SUN”(일) 중 하나이다. 다음 (즉, 내일 이후의 가장 빠른) 일요일까지는 며칠 남았을까? [입력] 첫 번째 줄에 테스트 케이스의 수 T가 주어진다. 각 테스트 케이스는 하나의 줄로 이루어진다. 각 줄에는 문자열 S가 주어진다. [출력] 각 테스트 케이스마다, 다음 일요일까지 며칠 남았는지를 한 줄에 하나씩 출력한다. 입력 3 SUN SAT MON 출력 #1 7 #2 1 #3 6 import java.util.HashMap; import java.util.Scanner; public class Solution { public void solu..
[SW] 13428. 숫자 조작 9자리 이하의 음이 아닌 정수 N이 있다. 당신은 이 수에서 한 쌍의 숫자를 골라 그 위치를 바꾸는 일을 최대 한 번 하여(안 하거나, 한 번만 하여) 새로운 수 M을 만들 수 있다. 단, 바꾼 결과 M의 맨 앞에 ‘0’이 나타나면 안 된다. M의 최솟값과 최댓값을 구하는 프로그램을 작성하라. [입력] 첫 번째 줄에 테스트 케이스의 수 T가 주어진다. 각 테스트 케이스는 하나의 줄로 이루어진다. 각 줄에는 0 이상 999,999,999 이하의 정수 N이 주어진다. N ≠ 0 이라면 주어지는 수가 0으로 시작하지 않는다. [출력] 각 테스트 케이스마다, M의 최솟값과 최댓값을 공백 하나를 사이로 두고 출력한다. 입력 4 12345 54321 142857 10000 출력 #1 12345 52341 #2 14..
[Java] 반올림 올림 버림 1. 반올림 Math.round() double pie=3.141592; System.out.println(Math.round(pie)); //3; System.out.println(Math.round(pie*10)/10.0); //3.1; System.out.println(Math.round(pie*100)/100.0); //3.14; System.out.println(Math.round(pie*1000)/1000.0); //3.142; String.format() double pie=3.141592; System.out.println(String.format("%.0f", pie)); //3 System.out.println(String.format("%.1f", pie)); //3.1 System...
ArrayList에서 max와 min값만 빼기 ArrayList list = new ArrayList(); list.add(0, 3); list.add(1, 4); list.add(2, 5); list.add(3, 100); list.add(4, 1); int max=Integer.MIN_VALUE; int min=Integer.MAX_VALUE; for(int x:list) { min=Math.min(x, min); max=Math.max(max, x); } list.remove(list.indexOf(max)); list.remove(list.indexOf(min)); for(int x:list) { System.out.print(x+" "); }
String[]을 String[][]로 변환 String [] s= {"a 7 3 3 50000 50000","b 7 3 3 100000 50000"}; String [][] arr=new String[s.length][]; for(int i=0;i

반응형