7. 점수 계산

2023. 9. 10. 20:22·알고리즘/Array(1, 2차원 배열)

1. 문제

 

출처: 한국정보올림피아드

 

2 - 1. 나의 풀이

1. 점수용 배열 만들기

2. 0번째 인덱스는 채점 0번 인덱스와 같음

3. 점수가 1일 경우. i - 1 번째 점수가 1 이상이면 i 번째 점수는 +1

4. 점수가 0일 경우. 해당 점수 인덱스는 0

5. 점수 인덱스가 결정 될 때(초기화 될 때) answer에 누적합한다.

 

 

2 - 2. 나의 코드

import java.util.Arrays;
import java.util.Scanner;

public class Array07 {
    public static int solution(int[] intArr, int n) {
        int tmpArr[] = new int[n];
        tmpArr[0] = intArr[0]; //처음은 점수 = 채점.
        int answer = tmpArr[0];

        for (int i = 1; i < n; i++) {
            if (intArr[i] == 1) { //점수가 1일 경우
            	//i-1 번째가 1 이상이면 +1 해주고 아니면, 그냥 1
                if(tmpArr[i-1] >=1) tmpArr[i] = tmpArr[i - 1] + 1;
                else tmpArr[i] = 1;
            } else{ //점수가 0 이면 채점도 0
                tmpArr[i] = 0;
            }
            answer += tmpArr[i];
        }
        //System.out.println(Arrays.toString(tmpArr));
        return answer;
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] intArr = new int[n];
        for (int i = 0; i < n; i++) {
            intArr[i] = sc.nextInt();
        }
        System.out.println(solution(intArr, n));


    }
}

3 - 1. 강의 풀이

나의 풀이보다 훨씬 간결하고 쉽게 풀었다. 오.....

 

1. 점수를 알려주는 count 변수, count 변수를 누적합 할 sum 변수 생성.

2. intArr[i] == 1 이면 count++ 하고 sum+=count

3. intArr[i] == 0 (else) 이면 count = 0;

 

 

3 - 2. 강의 코드

import java.util.Scanner;

public class Array07_solution {
    public static int solution(int[] intArr, int n) {
        int sum =0;
        int count=0;
        for (int i = 0; i < n; i++) {
            if (intArr[i] == 1) {
                count++;
                sum+=count;
            }else{
                count=0;
            }
        }
        return sum;
     }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] intArr = new int[n];
        for (int i = 0; i < n; i++) {
            intArr[i] = sc.nextInt();
        }
        System.out.println(solution(intArr, n));


    }
}

4. 얻어갈 점

굳이 문제에서 보여지는 대로 내가 배열을 생성할 필요 없이 더 쉬운 방법이 있다면 그대로 풀면 된다.

풀이 방식에 얽매이지 말자! 꼭!

'알고리즘 > Array(1, 2차원 배열)' 카테고리의 다른 글

9. 격자판 최대합  (0) 2023.09.14
8. 등수 구하기  (1) 2023.09.11
6. 뒤집은 소수  (0) 2023.09.10
5. 소수(에라토스테네스의 체)  (3) 2023.09.02
4. 피보나치 수열  (2) 2023.08.31
'알고리즘/Array(1, 2차원 배열)' 카테고리의 다른 글
  • 9. 격자판 최대합
  • 8. 등수 구하기
  • 6. 뒤집은 소수
  • 5. 소수(에라토스테네스의 체)
koreaioi
koreaioi
  • koreaioi
    koreaioi
    koreaioi
  • 글쓰기 관리
  • 전체
    오늘
    어제
    • 분류 전체보기 (162) N
      • JAVA (3)
      • 알고리즘 (88)
        • 백준 (11)
        • String(문자열) (12)
        • Array(1, 2차원 배열) (13)
        • Two pointers, Sliding windo.. (6)
        • HashMap, TreeSet(해쉬, 정렬지원 S.. (5)
        • Stack, Queue(자료구조) (8)
        • Sorting and Searching(정렬, 이.. (10)
        • Recursive, Tree, Graph(DFS,.. (14)
        • DFS, BFS 활용 (6)
        • 다시 시작! (1)
        • 기초 수학 (1)
      • 일상 (22)
      • Github (1)
      • MSA 공부 (4)
      • 경제, 금융, 디지털, 시사 (3)
      • 라즈베리파이 (10)
      • 프로젝트에서 일어난 일 (18)
      • FrontEnd 공부 (9)
        • React (8)
      • Spring (2)
      • 기술 세미나 (1)
      • DB (1) N
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
koreaioi
7. 점수 계산
상단으로

티스토리툴바