Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 11047
- baekjoon
- 자류구조
- Async/Await
- 백준
- 비동기처리
- 탐욕 알고리즘
- 1302
- event loop
- 1904
- 배열같은배열아닌너
- 함수 이놈
- 함수 arguments
- setTiemOut
- 유사배열
- 9461
- 1236
- 1543
- 2667
- 동적계획법
- javascript
- 1668
- 1931
- 함수 parmater
- 1568
- 렉시컬 스코프
- 호이스팅
- 함수 선언문
- 11399
- html5
Archives
- Today
- Total
두치의 개발공부
BaekJoon_1032(베스트셀러) 본문
문제
https://www.acmicpc.net/problem/1302
문제풀이
가장 많이 팔린 책이 여러권일 때 사전순이기 때문에 먼저 입력받은 책들을 sort한 후 시작하였다.
먼저 배열의 첫번째 책을 변수로 할당하고 입력받은 책들을 반복문 돌면서 지금 책과 반복문의 책이 같으면 count를 +1 하고, 같지 않으면 count를 1로 바꿔준다.
현재의 count(nowCnt)가 가장 많이 팔린 책의 count(maxCnt)보다 크면 책 이름을 바꿔준다.
Object를 만들어 각 책을 Key값으로 하고 count 횟수를 value로 하여 max값을 찾는 방법도 있다.
소스코드
const answer = ([input,...n]) => {
const books = n.sort();
let maxCnt = 0; // 가장 많이 팔린 책의 수
let nowCnt = 0; // 현재 검색하고 있는 책의 수
let maxBook = ''; // 가장 많이 팔린 책의 이름
let nowBook = books[0]; // 비교를 위하여 책의 첫번째 요소를 할당
books.forEach(data => {
// 현재의 책과 과거의 책이 같은면 카운트 + 1 / 같이 않으면 카운트 = 1
if(nowBook === data){
nowCnt += 1;
}else{
nowCnt = 1;
}
// 현재의 카운트가 가장 많이 팔린 책의 수 보다 크면 가장 많이 팔린 책의 이름과 카운트를 변경
if(maxCnt < nowCnt){
maxBook = nowBook
maxCnt = nowCnt
}
nowBook = data;
})
console.log(maxBook);
}
const input = [];
require("readline")
.createInterface(process.stdin, process.stdout)
.on("line", (line) => {
input.push(line);
})
.on("close", () => {
answer(input);
process.exit();
});
소스코드는 깃헙에서도 확인이 가능합니다 🤗
https://github.com/duduchi/Algorithm/blob/main/Search/BaekJoon_1302.js
'알고리즘' 카테고리의 다른 글
BaekJoon_1236 (성 지키기) (0) | 2022.07.05 |
---|---|
BaekJoon_1668(트로피 진열) (0) | 2022.06.29 |
BaekJoon_1568(새) (0) | 2022.06.27 |
BaekJoon_1543(문서 검색) (0) | 2022.06.23 |
BaekJoon_1541(잃어버린 괄호) (0) | 2022.05.11 |