[백준] 30445 - 행복 점수
[백준] 30445 - 행복 점수

[백준] 30445 - 행복 점수

언어
Python
C++
난이도
Bronze 1
다시 풀어보기
다시 풀어보기
알고리즘 유형
구현
작성자
박용성박용성
생성 일시
2024년 10월 28일

🖥 시작하며

파이썬에서는 round 함수가 반올림 형식이 다르기 때문에, 조금 다른 방식으로 구현해야 한다.

⚙️ 코드

import sys from decimal import Decimal, ROUND_HALF_UP input = sys.stdin.readline if __name__ == "__main__": words = input().strip().split() ph = sum(word.count(c) for word in words for c in "HAPY") pg = sum(word.count(c) for word in words for c in "SAD") if ph == 0 and pg == 0: print("50.00") else: value = 100 * ph / (ph + pg) rounded_value = Decimal(value).quantize(Decimal("0.01"), rounding=ROUND_HALF_UP) print(f"{rounded_value:.2f}")
#include <iostream> #include <string> #include <vector> #include <sstream> #include <iomanip> #include <cmath> using namespace std; double roundToTwoDecimal(double num) { // 반올림을 위해 100을 곱하고 0.5를 더한 후 내림 return floor(num * 100 + 0.5) / 100; } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); string line; getline(cin, line); // 문자열을 단어로 분리 stringstream ss(line); string word; vector<string> words; while(ss >> word) { words.push_back(word); } // 행복과 슬픔 카운트 int ph = 0; // positive/happy count int pg = 0; // negative/sad count // 각 단어에 대해 HAPPY와 SAD 문자 개수 세기 for(const string& w : words) { for(char c : w) { if(c == 'H' || c == 'A' || c == 'P' || c == 'Y') { ph++; } if(c == 'S' || c == 'A' || c == 'D') { pg++; } } } // 결과 계산 및 출력 if(ph == 0 && pg == 0) { cout << "50.00" << "\n"; } else { double value = 100.0 * ph / (ph + pg); value = roundToTwoDecimal(value); cout << fixed << setprecision(2) << value << "\n"; } return 0; }

📌 소감

댓글

guest