점수계산
내 코드 (정답) - 하
import java.util.*;
public class Main {
public Integer solution(int n, int[] arr){
Integer answer = 0;
int total = 0; // 총 점수 계산
int count = 0; // 이전 문제 맞았는지 count
for(int i = 0 ; i < arr.length; i++){
if(i == 0 && arr[0] == 1){
count = count + 1;
total = total + 1;
} else if(arr[i] == 1) {
if(arr[i - 1] == 0){
count = count + 1;
total = total + 1;
} else {
count = count + 1;
total = total + count;
}
} else {
count = 0;
}
}
answer = total;
return answer;
}
public static void main(String[] args) {
Main T = new Main();
Scanner kb = new Scanner(System.in);
int n = kb.nextInt();
int[] arr = new int[n];
for(int i = 0 ; i < n ; i++){
arr[i] = kb.nextInt();
}
System.out.println(T.solution(n, arr));
}
}
정답 코드
단순하게 매번 cnt만 늘려주면 되는 것을 몰랐다.
import java.util.*;
class Main {
public int solution(int n, int[] arr){
int answer=0, cnt=0;
for(int i=0; i<n; i++){
if(arr[i]==1){
cnt++;
answer+=cnt;
}
else cnt=0;
}
return answer;
}
public static void main(String[] args){
Main T = new Main();
Scanner kb = new Scanner(System.in);
int n=kb.nextInt();
int[] arr=new int[n];
for(int i=0; i<n; i++){
arr[i]=kb.nextInt();
}
System.out.print(T.solution(n, arr));
}
}
등수구하기
내 코드 (오답) - 하
어려운 문제는 아닌데 틀렸다.
import java.util.*;
public class Main {
public List<Integer> solution(int n, int[] arr){
List<Integer> answer = new ArrayList<>();
int[] tempArr = new int[arr.length];
for(int i = 0; i < arr.length;i++){
tempArr[i] = arr[i];
}
for(int i = 0 ; i < arr.length; i++){
for(int j = 0 ; j < arr.length ; j++){
if(arr[i] > arr[j]){
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
for(int i = 0; i < tempArr.length; i++){
for(int j = 0 ; j < arr.length; j ++){
if(tempArr[i] == arr[j]){
answer.add(j+1);
}
}
}
return answer;
}
public static void main(String[] args) {
Main T = new Main();
Scanner kb = new Scanner(System.in);
int n = kb.nextInt();
int[] arr = new int[n];
for(int i = 0 ; i < n ; i++){
arr[i] = kb.nextInt();
}
for(int i : T.solution(n, arr)){
System.out.print(i + " ");
}
}
}
정답 코드
이중 for문 돌면서 기준보다 큰 것이 있으면 cnt++
이렇게 단순한걸 몰랐을까.
import java.util.*;
class Main {
public int[] solution(int n, int[] arr){
int[] answer = new int[n];
for(int i=0; i<n; i++){
int cnt=1;
for(int j=0; j<arr.length; j++){
if(arr[j]>arr[i]) cnt++;
}
answer[i]=cnt;
}
return answer;
}
public static void main(String[] args){
Main T = new Main();
Scanner kb = new Scanner(System.in);
int n=kb.nextInt();
int[] arr=new int[n];
for(int i=0; i<n; i++){
arr[i]=kb.nextInt();
}
for(int x :T.solution(n, arr)) System.out.print(x+" ");
}
}
반응형
'CS 기초 > 알고리즘 · 문제풀이' 카테고리의 다른 글
카카오 코딩 테스트 - 신규 아이디 추천 (0) | 2022.03.12 |
---|---|
[JAVA] Array(1, 2차원 배열) - 격자판 최대합 / 봉우리 (0) | 2022.03.05 |
[JAVA] Array(1, 2차원 배열) - 피보나치 수열 / 소수(에라토스테네스 체) / 뒤집은 소수 (0) | 2022.02.27 |
[JAVA] Array(1, 2차원 배열) - 큰 수 출력하기 / 보이는 학생 / 가위 바위 보 (0) | 2022.02.26 |
[JAVA] 문자열(String) - 가장 짧은 문자거리 / 문자열 압축 / 암호 (0) | 2022.02.26 |