분류 전체보기 297

#4583 : 거울상

풀이방법 2022.01.19 먼저 주어진 문자열의 거울상이 출력 가능한지 여부를 판단한다. 여기에는 int 타입 변수 v를 사용하였다. v의 초기값을 1로 설정한다. 주어진 문자열의 모든 문자를 살펴보면서, 거울상을 출력할 수 없는 문자가 하나라도 발견되면 v의 값을 0으로 설정한다. v의 값이 0으로 정해지면 "INVALID"를 출력한다. v의 값이 1로 정해지면 주어진 문자열을 마지막 글자부터 거꾸로 방문하면서 해당 글자의 거울상 문자를 즉시 화면에 하나씩 출력한다. 입력의 끝을 나타내는 "#"이 입력될 때까지 이를 반복한다. 코드 Java(2022.01.19) import java.io.*; public class Main { public static void main(String[] args) t..

#15904 : UCPC는 무엇의 약자일까?

풀이방법 2022.01.19 'U', 'C', 'P', 'C'가 저장된 문자 배열 init 을 선언한다. init을 탐색하는 데 사용되는 인덱스는 i이다. 입력 스트링을 한 단어씩 탐색한다. 탐색 대상 단어의 첫 글자가 init[i]가 아니라면 i의 값을 변경하지 않은 채 다음 단어로 넘어간다. 탐색 대상 단어의 첫 글자가 init[i]라면 i의 값을 1 증가시킨다. 이 과정을 진행하는 중에 i의 값이 4가 된다면 머리글자 'U', 'C', 'P', 'C'를 모두 찾은 것이므로 성공 문구를 출력하고 즉시 프로그램을 종료한다. 입력 스트링을 모두 탐색한 후에도 i의 값이 4보다 작다면 실패 문구를 출력하고 프로그램을 종료한다. 단, University CPC와 같이 한 단어 내에 여러 개의 머리글자가 포함..

#1026 : 보물

풀이방법 사용된 것: Arrays.sort 배열의 요소들을 정렬해준다. 더보기 Arrays.sort() 사용시 주의할 점 2022.01.14 B의 요소들의 순서는 바꿔선 안 된다는 조건은 신경쓰지 말자. 결과만 옳게 나오면 된다. 이거 신경 쓰다가 시간 버렸다. A를 오름차순으로, B를 내림차순으로 정렬한 뒤 S 함수를 수행하면 최솟값을 구할 수 있다. 코드 Java(2022.01.14) import java.util.Scanner; import java.util.Arrays; import java.util.Collections; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Sc..

Arrays.sort() 사용시 주의할 점

Arrays.sort() 를 이용해 정수 배열을 역순으로 정리하려고 시도하였다. int[] temp = B; Arrays.sort(temp, Collections.reverseOrder()); B는 temp와 같은 타입의 배열이다. 그런데 다음과 같은 오류가 뜨고 실행이 안 되었다. The method sort(int[]) in the type Arrays is not applicable for the arguments (int[], Collections.reverseOrder()) 구글에 검색해보았을 땐 분명 이렇게 쓰면 된다고 했는데... 뭐가 문제지 싶어서 Java api 문서에서 Arrays.sort()를 살펴보았다. public static void sort(int a[], Comparator)..

#11656 : 접미사 배열

풀이방법 사용된 것: Arryas.sort 배열의 요소들을 사전순으로 정렬한다. StringBuilder 문자열을 편집할 수 있게 해준다. 2022.01.14 문자열이 소문자로만 이루어져있다는 것에서 착안하여, 문자열의 한 글자를 '0'으로 대체함으로써 지워나가는 방법을 선택했다. 앞 글자부터 차례차례 방문하여, 한 글자를 지우고 뒤의 나머지 부분을 접미사 배열에 저장 또 다음 글자를 지우고 나머지 부분을 접미사 배열에 저장 이 과정을 반복하였다. 코드 Java(2022.01.14) import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String[] args) { // TODO Auto-..

#15889 : 호 안에 수류탄이야!!

풀이방법 사용된 것: BufferedReader StringTokenizer 그리디 알고리즘 2022.01.13 각 장병은 (자신의 위치 좌표)+(자신의 사거리)만큼의 좌표까지 수류탄을 전달할 수 있다. (위치 좌표)+(사거리)를 '전달 가능 좌표'라 하자. 욱제부터 차례차례 장병들의 전달 가능 좌표를 살핀다. k번째 장병까지의 전달 가능 좌표의 최댓값보다 k+1번째 장병의 위치 좌표값이 크면 수류탄은 땅에 떨어진다. k번째 장병까지의 전달 가능 좌표의 최댓값보다 k+1번째 장병의 위치 좌표값이 작으면 k+1번째 장병은 수류탄을 무사히 받을 수 있다. 이 과정을 반복하다가 한 번이라도 수류탄이 땅에 떨어지면 실패 문구를 출력하고 프로그램을 종료한다. 수류탄이 무사히 마지막 장병에게 전달되면 성공 문구를 ..

버퍼드리더 BufferedReader

지금까지는 입출력을 Scanner와 System.out.print로만 처리하였는데, 어제 동아리 활동 중에 팀원들이 버퍼드리더를 쓰는 것을 보았다. 많은 양의 입출력을 빠르게 처리하는 데 좋다고 한다. 버퍼드라이터도 있으나 일단 버퍼드리더부터 써보려고 한다. 당장 이번 주 과제에 사용해야겠다. 설명 Scanner: 공백과 Enter를 모두 데이터를 구분하는 경계로 인식한다. int, char, String 등 여러 형식으로 데이터를 받아올 수 있다. BufferedReader: Enter만을 경계로 인식한다. 받아오는 데이터의 형식이 일반적으로 String으로 고정된다. 많은 양의 데이터를 받아올 때 효율이 좋고 작업이 단순하다. 그러나 받아온 후 데이터를 쓰기 좋게 가공하는 단계가 필요하다. readL..