백준 1193 www.acmicpc.net/problem/1193 풀이 지그재그 순서로 지나간다는 것이 여기서 주의할 점이다. 2번째 줄을 보면 1/2 → 2/1 3번째 줄을 보면 3/1 → 2/2 → 1/3 즉, 짝수 줄의 분자는 증가, 분모는 감소이고 홀수 줄은 그 반대이다. 그리고 같은 줄에서 분자 + 분모 의 값 = 줄번호 +1 은 동일하다. 줄은 1씩 증가하므로 for문에서 입력된 값을 순차적으로 차감해준다. 이제 남은 값이 i 보다 작아졌다면 i 줄에 그 분수가 위치한다는 뜻이다. 여기서 i 줄이 홀수인지 짝수인지 판단하고 분자와 분모를 계산해준다. 만약 짝수라면, 분자는 check % i 인 나머지 값(check)이 될 것이고, 분모는 i 번째 줄이니까 i+1-check 값이 될 것이다. 홀..
백준 1085 www.acmicpc.net/problem/1085 풀이 직사각형에서 탈출하기 위해서 가장 최단거리를 알아보기 위해 x, y축을 고려해본다. 생각이 안나면 간단히 좌표만 그려도 해결되는 문제이다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int x = sc.nextInt(); int y = sc.nextInt(); int h = sc.nextInt(); int w = sc.nextInt(); sc.nextLine(); System.out...
백준 2292번 www.acmicpc.net/problem/2292 풀이 몇 개의 방을 지나가냐는 출력하는 문제지만, 쉽게 말해 1에서 몇 번의 테두리를 지나서 도달할 수 있는가를 뜻한다. 즉, 우리가 여기서 알아야 할 것은 원하는 방이 몇 번째 테두리 인지 알면 된다. 주의점! 입력값이 1 이면 1번 지나는 것으로 한다. 그림에서 2 / 8 / 20 / 38 / 62 ... 숫자를 보면 한 줄이면서 새로 테두리를 만드는 시작점이 된다. 이 시작점이 아래 코드의 limit 가 된다. 처음 limit 의 시작은 2 인데 다음 시작점은 6이 증가하고 그 다음은 12, 18 이런식으로 증가한다. 등차수열을 이루고 있는 그 차가 6*n 값이라는 것을 알 수 있다. 즉, 우리가 원하는 방이 몇 번째 테두리인지 알..
백준 1929번 www.acmicpc.net/problem/1929 풀이 소수를 구하는 문제이다. 먼저, 소수는 1과 자기자신으로만 나뉠 수 있는 양의 정수이다. 즉, 반대되는 합성수가 아닌 수를 말한다. (소수 위키백과 참조) 소수인지 확인하는 check 메서드를 따로 생성하여 풀이했다. 메서드 내용을 살펴보면, (소수는 boolean b 을 true 로 반환한다.) 1. 먼저 2보다 작은 수 1은 소수가 아니므로 제외했다. 2. 그리고 2는 소수이므로 판별하는 boolean b 값을 true 로 주었다. 3. 그 이상의 수는 판별을 위해 Math.sqrt(a) 를 사용했다. Math.sqrt(a) 메서드는 숫자의 제곱근을 반환하는 메서드이다. 검사할 숫자를 2부터 그 수의 제곱근까지 for문을 이용해..
백준 2908번 www.acmicpc.net/problem/2908 풀이 상수 문제지만 그냥 이름만 상수일 뿐 입력받은 수를 뒤집어서 큰 수가 무엇인지 판단하는 문제이다. 두 수를 문자열 형태로 받아왔다. 그 이유는 reverse() 메서드를 사용하기 위해서이다. 문자열을 뒤집는 메서드인데 return 값을 주목할 필요가 있다. (new StringBuffer(s)).reverse().toString(); 여기서 문자열 s 를 StringBuffer 에 넣어 reverse() 메서드를 통해 문자열을 뒤집을 수 있다. 하지만 출력 값이 StringBuffer 타입이므로 변형을 위해 toString(); 으로 타입을 변환해준다. 마지막으로 출력시에는 두 문자열 중 숫자로 바꾸어 큰 수를 출력한다. 1 2 3..
백준 2941번 www.acmicpc.net/problem/2941 풀이 BufferedReader 를 이용해서 풀이 시간을 단축할 수 있었다. 각 경우에 수를 나누어 생각하면 되는데 입력받은 문자열에서 크로아티아 알파벳이 나오면 cnt 를 더해준다. 크로아티아 알파벳을 찾는 방법은 특정 문자 뒤에 나오는 문자가 크로아티아 알파벳에 해당하는지 && 조건으로 알아본다. 이 문제에서 주의할 점은 1. 크로아티아 알파벳이 2개의 문자로 되어 있는 경우와 3개의 문자로 되어 있는 경우가 있으므로 이를 구분하여 for문이 적용될 수 있도록 해야 한다. 2. if(ch=='c' && (a.charAt(i+1)=='=' || a.charAt(i+1)=='-')) 와 같이 비교 연산자의 순위도 고려하여 괄호로 구분을 ..
백준 1152번 www.acmicpc.net/problem/1152 풀이 입력된 값을 문자열로 받고, 그 문자열을 charAt() 을 이용해서 한 문자씩 ' ' 공백이 맞는지 확인한다. 여기서 주의할 점은 공백이 앞이나 뒤에 올 수 있다는 것이다. 다시 생각하면 앞 뒤 공백이 없다면 문자열에 있는 공백의 수 +1 값이 단어의 수가 된다. 따라서 공백이 나올 때마다 cnt 로 숫자를 세어준다. 그리고 결과 값에서 +1 을 해준다. 마지막으로 앞서 생각한 주의점을 고려해주는데, 앞 뒤 공백 값은 단어 수에 영향을 미치면 안 되므로 그 경우에는 cnt 를 차감해준다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 import java.util.*; pub..
백준 3052번 www.acmicpc.net/problem/3052 풀이 Collection 두 개를 이용해서 input arraylist 에는 입력값을 받고, remainder arraylist 에는 42로 나눈 나머지 값을 받았다. 중첩 for문을 이용해서 remainder 의 인덱스 값이 그 후의 인덱스 값과 동일한 경우에는 cnt를 증가시켰다.이 때, 입력값과 동일하게 나올 수 있는 나머지 값이 총 10개 이므로 10개에서 이 cnt 를 제외한 값을 정답으로 출력했다.(구하고자 하는 값은 서로 다른 나머지 수이기 때문에) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 import java.util.*..
- java
- 개발도서
- 노개북
- 정보처리기사
- jdbc
- 북클럽
- SQLD
- 정보처리기사 필기
- ubuntu
- filezila
- spring
- IT 5분 잡학사전
- 호스팅영역
- intellij
- 배포
- EC2
- 독서후기
- 실용주의프로그래머
- 웹페이지만들기
- LifecycleException
- putty
- 기술블로그
- AWS
- gradle
- 정보처리기사 실기
- gradle build
- 오늘의코딩
- 노마드코더
- JIRA
- git연동
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |