본문 바로가기

백준

2033 반올림 음.. 엄.. 이렇게 푸는게 맞다고 생각했는데 틀렸다. 0부터 9까지는 반올림 안 하니깐 그대로 출력되고 10이상은 반올림을 해야하고.. 최대가 99,999,999라 반올림하면 100,000,000라 2,100,000,000보다 작아서 터지지도 않고.. 실제로 저 값 넣어보니 100,000,000이 나왔다. 음.. 모르겠다. #include #include using namespace std; int main() { int n; scanf("%d", &n); int len = to_string(n).length(); for(int i = 1; i tmp){ if(n%tmp >= 5*tmp/10){ n = n/tmp*tmp; n +.. 더보기
9455 박스 규칙찾는 문제였다. 규칙 찾기 전에는 좀 헤맸는데 막상 찾고 나니깐 쉽다! #include #include using namespace std; int main() { int t; scanf("%d", &t); for(int i = 0; i 0; j--){ for(int k = 0; k 더보기
10163 색종이 이렇게 풀면 될 것 같은데 싶었는데 그대로 하니 맞았다! 찜찜한 건 시간복잡도가 n^3이라 조금 걱정했는데 n^3이면 입력이 대략 500까지 가능하고 이 코드는 n^3을 두 번 쓰니 250까지 1초 내로 돌아갈 것이다. 여기서 최대 100번까지 돌아가니 시간 안에 돌아갈 것이다. #include #include using namespace std; int main() { vector v(101, vector (101, 0)); int n; scanf("%d", &n); for(int i = 1; i 더보기
1408 24 시간문제 많이 풀어봐서 스뭇스하게 풀었다. 시간 ':' 기준으로 자르는 건 substr 사용해서 잘랐고 int로 바꾸는 건 stoi를 사용했다. 음 편하구만 이거 알고 있어서 쉽게 풀었다. #include #include using namespace std; int main() { string now_time; string start_time; cin >> now_time >> start_time; int now_sec = stoi(now_time.substr(0, 2))*3600 + stoi(now_time.substr(3, 2))*60 + stoi(now_time.substr(6, 2)); int start_sec = stoi(start_time.substr(0, 2))*3600 + stoi(star.. 더보기
2578 빙고 허어.. 이것도 어렵다. 먼저 배열 두개를 만들어서 하나는 숫자를 저장하고 하나는 불렀던 숫자인지 체크한다. 다음으로 빙고가 되기까지 숫자 12개가 필요하므로 11개까지 숫자를 미리 부른 다음에 다음부터 값을 하나씩 넣으면서 빙고인제 체크한다. #include #include using namespace std; int main() { vector num(25); vector check(25); //num 배열에 숫자 초기화 for(int i = 0; i < 25; i++){ int input; scanf("%d", &input); num[i] = input; check[i] = false; } //부른 숫자 11개 체크 for(int i = 0; i < 11; i++){ int input; scanf(.. 더보기
1834 나머지와 몫이 같은 수 정답률 낮을 때부터 알아봤어야 했다.. 정답률이 저런데 문제는 쉬워서 이상하다 생각했지 그냥 단순히 나머지를 기준으로 수를 구하려고 했다. 입력이 2000000이라 터질 껄 예상해서 long long으로 받았다. 그런데 또 어디선가 문제 생겼나보다ㅎㅎ #include using i64 = long long; int main() { int n; i64 sum = 0; scanf("%d", &n); for(int i = 1; i < n; i++){ sum += i*n + i; } printf("%lld", sum); return 0; } 흑흑.. 뭐가 문제야.. 이것도 내일 다시봐야겠다. 음.. 로직은 맞고 틀렸다면 터져서 틀린 것 같았다. 계산해봤더니 터질 수도 있겠다 싶었다. 그래서 unsigned lo.. 더보기
2851 슈퍼마리오 100에 가장 가까운 값을 선택해야 한다. 내 생각에는 다 합해도 100에 못 미치는 경우와 중간에 100 이상의 값이 되는 경우 두가지로 나뉜다고 생각했다. 다 합쳐도 100에 못미치는 경우는 따로 변수를 둬서 체크한다. 중간에 100을 넘기는 경우는 미리 다음 값을 뭘 받는지 확인해서 더했을 경우 100을 넘는지 확인한다. 더했을 시 100을 넘긴다면 그때는 두 값 중 어느 값이 더 가까운지 확인한다. #include int main() { int sum = 0; bool less100 = true; for(int i = 0; i = 100){ if(100-sum >= num-100) printf("%d".. 더보기
2460 지능형기자 2 전에도 이 문제 풀었는데 차이가 뭐지? 몰라서 그냥 전처럼 쉽게 풀었다. 그래도 나름 for 루프 안에 쓰이는 건 for문 안에 변수 선언하고 값 변하면 안되는 부분은 밖에 선언했다. #include int main() { int max = 0; int now = 0; for(int i = 0; i max) max = now; } printf("%d", max); return 0; } 더보기