티스토리 뷰
[6730] : 장애물 경주 난이도
- 입력 : 블록의 높이들 → 고정된 값이고, 삽입 삭제가 일어나지 않을 예정이므로 배열(: blocks)을 사용
- 출력 : 1) 올라갈 때 가장 심한 높이 변화 2) 내려갈 떄 가장 심한 높이 변화
- 전략
- blocks[i - 1]과 blocks[i]를 비교해서 up인지 down인지 판별
- 방금 비교한 up / down이 maxUp / maxDown 보다 큰지 판별해서 업데이트
#include <iostream>
using namespace std;
int main(void){
int testCase;
cin >> testCase;
for(int t = 0; t < testCase; t++){
int blockCount; // 주어질 block의 개수
cin >> blockCount;
// blocks 배열 동적 할당
int *blocks = new int[blockCount];
for(int b = 0; b < blockCount; b++)
cin >> blocks[b];
// up : 몇 칸 올라갔는가 && down : 몇 칸 내려갔는가
// maxUp, maxDown : 가장 심한 높이 변화
int up, down, maxUp = 0, maxDown = 0;
for(int i = 1; i < blockCount; i++){
// UP
if(blocks[i] > blocks[i - 1]){
up = blocks[i] - blocks[i - 1];
// maxUp 업데이트
if (up > maxUp)
maxUp = up;
}
// DOWN
else{
down = blocks[i - 1] - blocks[i];
// maxDown 업데이트
if(down > maxDown)
maxDown = down;
}
}
cout << "#" << t + 1 << " " << maxUp << " " << maxDown << endl;
}
return 0;
}
[6718] : 희성이의 원근법
- 입력 : 대체 값으로 바꿀 거리(m) → 문제는 km로 주어진 것이므로 단위에 유의
- 출력 : 대체 값
- 전략
- 이 문제는 코드가 문제가 아니라 시간 초과가 문제다. 속도가 발목을 잡는다면 io를 손 좀 봐주면 된다. stackoverflow에 따르면 iostream이 컴퓨터 하드보다 느리다던데....? cout cin endl을 printf, scanf, \n으로 고쳐주면 아마 다 PASS하지 않을까 싶은데?
#include <iostream>
using namespace std;
int main(void){
int testCase;
scanf("%d", &testCase);
for(int test = 1; test <= testCase; test++){
int distance, convertDist;
scanf("%d", &distance);
if( distance < 100 ) convertDist = 0;
else if( distance < 1000 ) convertDist = 1;
else if( distance < 10000 ) convertDist = 2;
else if( distance < 100000 ) convertDist = 3;
else if( distance < 1000000 ) convertDist = 4;
else convertDist = 5;
printf("#%d %d\n", test, convertDist);
}
return 0;
}
[6692] : 다솔이의 월급 상자
아니 누가 월급을 상자에다가 랜덤으로 줘 문제 진짜ㅋㅋㅋ
- 입력 : 확률, 급여(만원) (그 급여일 확률이 주어지는 셈)
- 출력 : 월급의 평균
- 전략
- 문이과 상관없이 고등학교 통계를 했다면 E(x) = Σ pᵢxᵢ 라는 사실을 알테고, 코드는 전혀문제가 아니니... 왜 D3에 있는지 모르겠는 감사한 문제
- 그치만 c++을 쓴다면 <iomanip>에서 fixed와 setprecision 하는 것을 잊으면 안된다.
#include<iostream>
#include<iomanip>
using namespace std;
int main(void){
int testCase;
cin >> testCase;
for(int test = 1; test <= testCase; test++){
int cases;
double sum = 0.0;
cin >> cases;
for(int c = 0; c < cases; c++){
double prob;
int pay;
cin >> prob >> pay;
sum += prob * pay;
}
cout << "#" << test << " " << fixed << setprecision(6) << sum << endl;
}
return 0;
}
[6485] : 삼성시의 버스 노선
이 문제는 진짜 출제한 사람의 기억 지우고 풀어보라고 해야된다... 입력 값 설명을 좀... 후....(불만 불만)
- 입력 : 버스 노선들이 지나가는 버스정류장 최소, 최대 값(A, B), 알아볼 정류장 수(P), 정류장 번호(C)
- 출력 : Cᵢ 정류장을 지나는 버스 노선 개수
- 전략
- 정류장은 5000개로 고정이므로 배열을 사용 → 정류장 번호는 1 부터 시작하므로 배열()의 크기는 5001로 한다.
#include <iostream>
using namespace std;
int testCase;
int busStop[5001];
// 한 번의 testCase가 끝나면 busStop[i] 0으로 초기화
void initializeBusStop(int*);
int main(void){
cin >> testCase;
for(int test = 1; test <= testCase; test++){
initializeBusStop(busStop);
int tc;
cin >> tc;
for(int i = 0; i < tc; i++){
int Ai, Bi;
cin >> Ai >> Bi;
for(int stop = Ai; stop <= Bi; stop++){
busStop[stop]++; // 해당 정류장 지나면 증감
}
}
int P; // 알아볼 정류장 개수
cin >> P;
int *stops = new int[P]; // 정류장 번호 저장(C 값들 저장)
for(int w = 0; w < P; w++)
cin >> stops[w];
cout << "#" << test << " ";
for(int w = 0; w <P; w++)
cout << busStop[stops[w]] << " ";
cout << endl;
}
return 0;
}
void initializeBusStop(int *arr){
for(int i = 0; i < 5000; i++){
arr[i] = 0;
}
}
'CS > 알고리즘' 카테고리의 다른 글
[SWEA] D3 : 5948, 5789, 5549 (0) | 2019.07.24 |
---|---|
[SWEA] D3 : 6190, 6057, 6019, 5986 (0) | 2019.07.24 |
[C++] Array 와 Vector 한 방에 비교하기 (1) | 2019.06.24 |
[SWEA] D2 : 1970, 1979, 1974, 1983 (0) | 2019.06.16 |
[SWEA] D2 : 1859, 1948, 1959, 1966 (0) | 2019.06.16 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- swacademy
- 부스트캠프
- TableView
- ios
- 운영체제
- OS
- SWIFT
- RxSwift
- 졸업작품
- 삼성소프트웨어아카데미
- 컴과졸작
- 부스트캠프2020
- 코딩테스트
- 컴공졸작
- 보안
- 커넥트재단
- 코테
- 알고리즘
- 인턴
- 컴퓨터공학
- nosql
- 개발자인턴
- 부캠
- 소프트웨어역량시험
- 프로그래머스
- 소프트웨어아카데미
- firebase
- C++
- 삼성
- 데이터분석
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함