일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- ArrayList
- GitHub #Commit #BaekJoon
- 자바
- 점수계산
- 배열
- 모든행과열대각선의합
- 아스키코드
- 등수구하기
- Two Pointer
- 뒤집은 소수
- 인프런
- 최대 길이
- 투 포인터
- java
- 10992
- 임시반장 정하기
- 연속부분수열
- 두 배열 합치기
- 알고리즘
- 10991
- 큰 수 출력하기
- 누적 계산
- 격자판
- 공통원소 구하기
- 백준
- array
- 보이는 학생
- 코테준비
- 가장 짧은 문자거리
- Pointer
- Today
- Total
목록java (22)
ezhoon
📖 문제 N 명의 학생 입력 각 학생의 등수 출력 같은 점수가 입력될 경우 높은 등수로 동일 처리 즉 가장 높은 점수가 92점인데 92점이 3명 존재하면 1등이 3명이고 그다음 학생은 4등이 된다. ⚠️ 주의사항 같은 점수가 있을 때 높은 등수로 처리해야 한다는 점 말고는 딱히 없어보인다. ✍️ 이해 * 1. 첫 줄 학생 수 입력 * 2. 두 번째 줄 국어점수 N개의 점수 입력. * 3. 등수 출력이므로 국어 점수 배열 i -> N까지 비교하면서 더 큰 값이 있을때마다 cnt 값 증가 후 마지막에 answer 배열에 등수 입력 * 4. 같은 점수가 있을 경우 높은 등수로 처리이므로 같은 경우는 아무것도 안해주면 됨 ✏️ 풀이 import java.io.BufferedReader; import java.i..
📖 문제 첫째 줄에 문제의 개수 N이 주어진다. 문제가 맞는 경우에는 1점으로 계산하며 연속으로 답이 맞는 경우에는 2점 3점 +1씩 누적된다. 9개의 OX문제 점수표가 있다고 하면 총점수는 1 + 1 + 2 + 3 + 1 + 2 = 10 점이다. 점수표 채점 1 0 1 1 1 0 0 1 1 점수 1 0 1 2 3 0 0 1 2 ⚠️ 주의사항 연속으로 맞춘 경우 cnt = cnt + 1 틀린 경우 cnt = 0 ✍️ 이해 * 1. N 값 입력 * 2. 0과 1로 이루어진 배열 입력 * 3. 배열[i] 에 값이 1이면 cnt ++ * 4. 점수[i] = cnt (연속으로 맞으면 증가) * 5. 틀린 경우는 점수[i] = 0 cnt -> 0 ✏️ 풀이 import java.io.BufferedReader; ..
📖 문제 N개의 자연수 입력되면 그 자연수를 뒤집는다. 소수이면 출력하며 소수가 아닌경우는 빈공간으로 만든다. 예로 32를 뒤집으면 23이고 23은 소수이다. 이런 경우에 출력한다는 것이다. 첫 자리부터의 연속된 0을 무시한다. ✍️ 이해 첫 줄에 자연수의 개수 N을 입력한다. N의 개수만큼 자연수를 배열에 입력한다. 배열에 자연수들을 reverse().toString() 으로 뒤집어준다. StringBuilder(" ? ").reverse().toString() ?에는 String 값만 들어갈 수 있으므로 배열 입력 받을 때 String 배열로 시작한다. boolean을 이용해서 소수이면 true 반환 후 answer.add(값) 넣어주면 된다. ⚠️ 주의사항 reverse().toString() 을 ..
📖 문제 자연수 N이 입력되면 1부터 N까지의 소수의 개수를 출력 20이 입력되면 1 ~ 20까지의 소수는 2, 3, 5, 7, 11, 13, 17, 19로 총 8개입니다. ✍️ 이해 우선 "에라토스테네스 체"가 무엇인지부터 알아야 할 것 같다. 에라토스테네스 체란? 2부터 소수를 구하고자 하는 구간의 모든 수(N)를 나열한다. 그림에서 회색 사각형들이 여기에 해당한다. 2는 소수이므로 오른쪽에 2를 쓴다. (빨간색) 자기 자신을 제외한 2의 배수를 모두 지운다. 남아있는 수 가운데 3은 소수이므로 오른쪽에 3을 쓴다. (초록색) 자기 자신을 제외한 3의 배수를 모두 지운다. 남아있는 수 가운데 5는 소수이므로 오른쪽에 5를 쓴다. (파란색) 자기 자신을 제외한 5의 배수를 모두 지운다. 남아있는 수 가..
문제 총 항 수 N만큼의 피보나치 수열 출력 이해 피보나치 수열의 개념이 먼저 필요하다. 피보나치 수열이란? - 앞의 2개의 수를 합하여 다음 숫자가 되는 수열이다. - 만약 7이 입력 된다면 1 + 1 + 2 + 3 + 5 + 8 + 13 이런 식의 수열이다. - 하지만 첫 번째, 두 번째 항은 앞의 2개의 숫자가 1이거나 없으므로 1로 고정된다. N개 이지만 첫 번째, 두 번째 항은 1로 고정이므로 for문의 시작은 2부터 시작한다. 배열[i] = 배열[i-2] + 배열[i-1] ⚠️ 주의사항 첫 번째, 두번 째 항은 1 고정 앞의 2개의 수를 합하여 더해야한다. 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io...
문제 총 N번의 게임을 하여 A가 이기면 A, B가 이기면 B를 출력하고 비기는 경우에는 D를 출력한다. 가위 : 1 바위 : 2 보 : 3 이해 N이 5라고 했을 때 아래와 같다. 회수 1 2 3 4 5 A 2 3 3 1 3 B 1 1 2 2 3 승자 A B A B D N을 입력받고 N의 수만큼 for문으로 A의 배열, B의 배열에 가위 바위 보 값을 입력한다. 비길 경우 'D' A : 가위 / B: 보 -> 'A' A : 바위 / B : 가위 -> 'A' A : 보 / B : 바위 -> 'A' 위의 경우를 제외하고는 전부다 B가 이긴 경우이므로 더 이상 if문을 사용할 필요가 없다. 이번에도 StringBuilder 이용해서 append 해 볼 생각이다. ⚠️ 주의사항 비기는 경우와 A가 이기는 모든..
문제 N 명의 학생이 일렬로 서있다. 맨 앞에 서 잇는 선생님이 볼 수 있는 학생의 수를 구하시오 (앞에 서 있는 사람들보다 크면 보이고, 작거나 같으면 보이지 않는다. 이해 N 명의 학생을 입력 받는다. 첫 번째 학생은 무조건 보이므로 cnt를 0이 아닌 1부터 시작한다 max = 배열[0] temp[i] > max -> 선생님한테 보이는 학생 이므로 cnt++, max = temp[i] 해준다. ⚠️ 주의사항 맨 앞 학생은 무조건 보인다는 것 더 큰 학생이 나올 때마다 값 갱신 해줄 것 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTo..
문제 N개의 정수를 입력받아 자신의 바로 앞 수보다 큰 수만 출력 첫 번째 수는 무조건 출력 이해 첫 번째 수는 무조건 출력이므로 for문의 시작은 1부터 하면 될 것 같다. 배열[N] > 배열[N-1] 일 때만 append 해준 뒤 sb.toString으로 return 해주면 된다. ⚠️ 주의사항 자신의 바로 앞 수보다 큰 수를 출력하지만 첫 번째 수는 무조건 출력이므로 for문 시작을 어떻게 해야 할지 주의해야 한다. 풀이 1. 제가 직접 풀어 본 풀이입니다. StringBuilder 사용해서 조건이 부합하는 경우에만 append 해준 뒤 sb.toString으로 return 해줍니다. import java.io.BufferedReader; import java.io.IOException; impor..
문제 알파벳 대문자로 이루어진 문자열 입력 같은 문자가 반복되는 문자 바로 오른쪽에 반복 횟수 표기 (단 1인 경우 생략하고 알파벳 출력) 이해 charAt(i)!= str.charAt(i+1) 다음 글자와 다른 경우 append(charAt(i)) 값 빈 문자열에 누적하고 false 인경우 cnt를 증가시킨다. 그 후 숫자를 넣어야 하는지 판별해야 하므로 if(cnt > 1) 1 인 경우는 생략하고 true 인 경우 append(cnt) 후 cnt=1 초기화해준다. ⚠️ 주의사항 1은 생략하므로 조건부 만들 때 ' = ' 들어가면 안 되는 것 동일한 문자가 반복되는 경우 문자 + 숫자라는 점 풀이 import java.io.BufferedReader; import java.io.IOException; ..
문제 한 개의 문자열 s와 문자 t가 주어진다. s의 각 문자가 문자 t와 떨어진 최소거리를 출력한다. 이해 문자열 s와 t는 공백으로 구분된다. 거리 입력을 위한 cnt=100 / 거리 값 누적을 위한 배열 answer s(i) == t 일 때는 0을 누적 s(i)!= t 일 때는 cnt++ 후 answer [i] = cnt 이 방법을 두 번 왼쪽에서부터 오른쪽 오른쪽에서 부터 왼쪽 2번 해주면 된다. 최소 거리이므로 왼쪽에서 부터 오른쪽에서 비교한 값이랑 오른쪽에서부터 왼쪽으로 비교한 값이 다르므로 어떻게 해결해야 할지 생각하기 왼쪽에서 부터 오른쪽으로 문자열s의 각 문자가 t와 떨어진 최소 거리 0 1 2 3 4 5 6 7 8 9 t e a c h e r m o d 101 0 1 2 3 0 1 2 ..