일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 배열
- Two Pointer
- 뒤집은 소수
- 임시반장 정하기
- 등수구하기
- 코테준비
- 두 배열 합치기
- 10992
- 보이는 학생
- 백준
- GitHub #Commit #BaekJoon
- 알고리즘
- 최대 길이
- 공통원소 구하기
- 점수계산
- 큰 수 출력하기
- array
- 인프런
- 자바
- 아스키코드
- 모든행과열대각선의합
- 누적 계산
- 투 포인터
- java
- 연속부분수열
- ArrayList
- 격자판
- 10991
- 가장 짧은 문자거리
- Pointer
- Today
- Total
목록자바 (24)
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로 *은 0으로 즉 "1000001"로 변환된다. 바뀐 2진수를 10진수화 한다. -> 65 아스키 번호 65는 대문자 'A' 이다 첫 줄에는 보낸 문자의 개수를 입력한다. 두 번째 줄에는 문자의 개수의 일곱 배만큼의 # 또는 *가 입력된다. 이해 아스키코드 알파벳 문제 풀이 위 링크에 아스키코드 값 정리해둔 이미지가 있고 예제 문제 풀이가 있다. 2진수로 변환할 때는 오른쪽에서부터 1 2 4 8 16으로 변환되므로 for문을 오른쪽에서 왼쪽으로 해야 한다. 다른 방법으로는 Integer.pars..

문제 알파벳 대문자로 이루어진 문자열 입력 같은 문자가 반복되는 문자 바로 오른쪽에 반복 횟수 표기 (단 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; ..