[BOJ/21318] 피아노 체조, c++

2021. 4. 5. 18:56·DEV/PS

www.acmicpc.net/problem/21318

 

21318번: 피아노 체조

피아노를 사랑하는 시은이는 매일 아침 피아노 체조를 한다. 시은이는 N개의 악보를 가지고 있으며, 1번부터 N번까지의 번호로 부른다. 각 악보는 1 이상 109 이하의 정수로 표현되는 난이도를

www.acmicpc.net

한줄 후기: 난 피아노 체르니 40까지 배웠다.

 

x, y 범위 내에서 a[i] > a[i+1] 인 개수를 찾는 문제이다.

다만 완전 탐색처럼 풀면 test case 별로 for 문을 돌아서 시간초과가 난다.

어떻게 알았냐면 나도 알고 싶지 않았다.

 

//AC
//BOJ 21318 피아노 체조

#include <iostream>
#include <vector>
using namespace std;
vector<int> piano;
int cnt[101010];
int main(){
	int n, tmp, t;
	cin >> n;
	for(int i=0; i<n; i++){
		scanf("%d", &tmp);
		piano.push_back(tmp);
		if(i==0)	continue;
		if(piano[i-1] > tmp)	cnt[i] = cnt[i-1] + 1;
		else cnt[i] = cnt[i-1]; 
	}
	cin >> t;
	while(t--){
		int x, y, ans = 0;
		scanf("%d %d", &x, &y);
		ans = cnt[y-1] - cnt[x-1];
		printf("%d\n", ans);
	}
	return 0;
}

시간 초과를 보고 이거 뭔가 처음에 난이도 받자마자 끝까지 다 기록해놔야 겠구나 하고 생각하다가 

누적합을 이용하면 된다는 걸 깨달았다.

난이도를 받을 때마다 바로 전 난이도랑 비교하고, 누적합을 cnt에 더해준다.

cnt => 1번부터 현재까지 실수할 악보 개수

 

x, y를 받으면 cnt[y]-cnt[x] 가 x-y 범위 내에서 실수하는 개수가 된다.

나는 0 index라 y-1, x-1로 해줬다. 시간 초과랑 사소한 것들만 주의해주면 되는 재밌는 문제

 

저작자표시 비영리 변경금지 (새창열림)

'DEV > PS' 카테고리의 다른 글

[BOJ/2623] 음악 프로그램, c++  (0) 2021.04.08
[BOJ/2109] 순회 강연, c++  (0) 2021.04.08
[BOJ/20922] 겹치는 건 싫어, c++  (0) 2021.04.05
[BOJ/14938] 서강 그라운드, c++  (0) 2021.04.05
[BOJ/20924] 트리의 기둥과 가지, c++  (0) 2021.03.29
'DEV/PS' 카테고리의 다른 글
  • [BOJ/2623] 음악 프로그램, c++
  • [BOJ/2109] 순회 강연, c++
  • [BOJ/20922] 겹치는 건 싫어, c++
  • [BOJ/14938] 서강 그라운드, c++
jobchae
jobchae
말하는 감자지만, 코드를 끄적이는 Node.js 백엔드 개발자입니다.
  • jobchae
    JOBCHAE
    jobchae
  • 전체
    오늘
    어제
    • 🚀 JOBCHAE (182)
      • DEV (151)
        • PS (108)
        • Node.js (12)
        • React (3)
        • docker (1)
        • 잡다한 개발 일지 (21)
        • injection (1)
        • JS, TS (3)
        • DB (2)
      • 축구 (0)
      • 일상 (19)
      • 영화 (3)
      • 음악 (8)
  • 블로그 메뉴

    • 💻 Github
    • 🙋🏻 Linkedin
    • 📖 방명록
  • 링크

    • PS Github
  • 공지사항

  • 인기 글

  • 태그

    node.js
    렛츠락페스티벌
    솝트
    일상
    위상정렬
    SOPT
    개발
    PS
    리액트
    mongoDB
    DP
    react
    boj
    회고
    이분탐색
    백준
    typescript
    JavaScript
    nodejs
    Nest.js
    Express
    슬랙봇
    슬랙
    BFS
    db
    알고리즘
    GitHub
    앱잼
    우선순위큐
    DFS
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
jobchae
[BOJ/21318] 피아노 체조, c++
상단으로

티스토리툴바