백준

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

1보다 큰 자연수 중에서 1과 자기 자신을 제외한 약수가 없는 자연수를 소수라고 한다. 예를 들어, 5는 1과 5를 제외한 약수가 없기 때문에 소수이다. 하지만, 6은 6 = 2 × 3 이기 때문에 소수가 아니다. 골드바흐의 추측은 유명한 정수론의 미해결 문제로, 2보다 큰 모든 짝수는 두 소수의 합으로 나타낼 수 있다는 것이다. 이러한 수를 골드바흐 수라고 한다. 또, 짝수를 두 소수의 합으로 나타내는 표현을 그 수의 골드바흐 파티션이라고 한다. 예를 들면, 4 = 2 + 2, 6 = 3 + 3, 8 = 3 + 5, 10 = 5 + 5, 12 = 5 + 7, 14 = 3 + 11, 14 = 7 + 7이다. 10000보다 작거나 같은 모든 짝수 n에 대한 골드바흐 파티션은 존재한다. 2보다 큰 짝수 n이..

Algorithms/백준

[백준] '과제 안 내신 분..?' - Java

X대학 M교수님은 프로그래밍 수업을 맡고 있다. 교실엔 학생이 30명이 있는데, 학생 명부엔 각 학생별로 1번부터 30번까지 출석번호가 붙어 있다. 교수님이 내준 특별과제를 28명이 제출했는데, 그 중에서 제출 안 한 학생 2명의 출석번호를 구하는 프로그램을 작성하시오. 출석번호를 통해 과제를 제출안한 학생의 번호를 찾으면 되는 문제이다. HashMap의 개념을 알고 풀면 좋았겠지만 단순히 배열로 풀 수 있었다. for(int i = 1; i < 29; i++) { int in_class = sc.nextInt(); student[in_class] = 1; } student배열에 출석번호로 초기화를 해준다. 입력되는 출석번호가 없으면 그 출석번호는 과제를 제출하지 않은 것이다. 제출하지 않은 출석번호를 ..

Algorithms/백준

[백준] 2480번 '주사위 세개' - Java

주사위를 BufferedReader로 입력받고 공백을 기준으로 정수형 변수들을 만들어 준 후 연산 하고자 하였다. 주사위 눈이 모두 같은 경우, 한개만 같은 경우, 모두 다른 경우를 and 와 or 연산을 통해 구현하면 된다. if(a == b && b == c && a == c) { result = 10000 + a * 1000; System.out.println(result); } a와 b가 같고 b와 c가 같고 a와 c가 같은 경우를 and연산으로 처리해주었고, result 변수에 상금을 담았다. else if (a == b || b == c || a == c) { if(a == b) { result = 1000 + a * 100; } else if(b == c) { result = 1000 + b..

Algorithms/백준

[백준] 2525번 '오븐 시계' - Java

백준 2884번 : 알람 시계와 비슷하게 '시간'을 다루는 문제이다. 알람 시계에서는 45분을 일찍 일어나야해서 -45를 해주는 것이 있었다면 이번 오븐 시계에서는 조리 후의 시간을 알려주는 시계를 만드는 것이므로 + m (분) 을 해주어야한다. int total = m + ing; if(m = 24) { h = h - 24; } else if(m >= 60) { m = 60 - m; } m = 60 - (total); m = Math.abs(m); if(m == 60) { m = 0; } System.out.println(h + " " + m); } else { if(h >= 24) { h = h -..

Algorithms/백준

[백준] 2884번 '알람 시계' - Java

시계, 시간과 관련된 문제를 풀이할때는 항상 느끼는 것이 100 단위 기준으로 다음 단위로 넘어가는 것이 아닌 60을 기준으로 사용한다는 것이다. 이를 변환해주는 과정이 필요했다. 처음에는 예시 예제 입력, 출력이 다양한 것을 보고 저 예제들에 다 통과될만큼 조건문을 만들면 되지 않을까 싶었다. // 1. 입력받은 '분'이 0분일 때 if(m 0) { m = m - 45; h--; m = 60 - Math.abs(m); System.out.println(h + " " + m); } 처음에는 코드가 길더라도 이러한 방식으로 적어주었다. Math.abs를 통해 절대값을 도출할 수 있었고, 만약 m = m - 45; // m(분) 연산에서 음수가 나오게 되면 Math.abs를 통해 연산이 가능한 양수로 바꿔주..

Algorithms/백준

[백준] 2753번 '윤년' - Java

윤년 예제는 프로그래밍을 처음 접할때나, 과제를 할 때 많이 보는 예제이다. Scanner 클래스를 이용해 년도를 입력받고 1 또는 0을 출력하여 윤년을 판별할 수 있다. 이번 풀이에서는 Scanner 클래스 대신 BufferedReader를 사용하고자 한다. % (나머지) 연산과 / (나눗셈) 연산, !=, || 논리연산 등을 적절히 써줘야하는 문제이다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException{ BufferedReader br = new B..

Algorithms/백준

[백준] 10172번 '개' - Java

문자열 출력을 이용해 귀여운 강아지를 출력해야한다. 간단한 문제인줄 알았으나 예상치 못한 부분이 있었다. 일반적으로 문자열 출력이라고한다면 System.out.println(" 안녕 "); 처럼 " " (큰따옴표)안에 문자열을 적어서 출력을 한다. 강아지의 귀 부분 문자열을 보면 \ (백슬래시)가 출력되는 것을 확인할 수 있는데, 이를 문자열로 인식하는지의 여부이다. 먼저, \ (백슬래시)가 하나만 쓰인다면 문자열로 인식하지 않는다. 자바에서 출력문 안에서 \ (백슬래시)가 등장하는 순간 그 바로 다음 문자를 인식한 후 특수문자처럼 취급한다. 한마디로 다른 기능을 하는 특수문자가 만들어지는 것이다. 이를 '이스케이프 시퀀스(Escape Sequence)'라고 하며, 특정하게 지정되어있는 경우가 아니라면 ..

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