-
Notifications
You must be signed in to change notification settings - Fork 5
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[1주차] 해바라기반 - 조현창 #3
The head ref may contain hidden characters: "1\uC8FC\uCC28/\uD574\uBC14\uB77C\uAE30\uBC18/\uC870\uD604\uCC3D"
Conversation
for (int i = 0; i < input.length(); i++)
{
int tmp = 0;
if (input[i] >= '0' && input[i] <= '9')
{
while (input[i] >= '0' && input[i] <= '9')
{
tmp *= 10;
tmp += input[i] - '0';
i++;
}
}
res += tmp * sign;
if (i < input.length() && input[i] == '-')
sign = -1;
}
cout << res; 기존 방법은 배열에 먼저 숫자와 부호를 insert후 순회하여 비효율적이었지만 |
cout.tie(NULL); | ||
string input; | ||
int a, res = 0, tmp = 0, minus = 0, sum = 0, sub = 0; | ||
vector<int> A; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
14번째 줄 - 변수명이 (짧더라도) 좀 더 명확하면 좋겠습니다.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
아하! 2번째 커밋에 반영했습니다!
1주차 참여해 주셔서 감사드립니다. :) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
PR title은Collaboration Guide에 나와있는 것과 같이 [{주차}] {그룹} - {이름}
으로 적어주세요!
int tmp = 0; | ||
if (input[i] >= '0' && input[i] <= '9') | ||
{ | ||
while (input[i] >= '0' && input[i] <= '9') |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
현창님이 작성하신 코드를 보다가 이 부분에서 out of range
가 발생하지 않은 것을 보고 신기하여 좀 찾아보았습니다.
C++의 string
의 경우, string
의 length에 해당하는 index를 참조해도 exception을 발생않는다고 합니다.
참고한 사이트
out of range가 발생하는 경우
그래서 visual studio 2019
환경에서 문제가 발생할 만한 코드를 작성한 후에 디버깅을 해보았는데,
정말로 string
의 length에 해당하는 index에 대해선 out of range
가 발생하지 않더라고요.
덕분에 하나 알아갑니다.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@sarah2234 님의 풀이(#4) 처럼 저도 한 글자마다 숫자를 parsing 했었는데,
while
문으로 숫자를 parsing 하신 점이 굉장히 인상 깊었습니다.
@alirz-pixel 스택으로 풀어본 풀이도 추가했습니다! |
@alirz-pixel
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
재풀이에 대한 commit 메시지는
[{주차} {반이름}] : {이름} - {번호 / 이름 / 티어} ({문제집issue번호}) - {추가내용}
으로 작성 부탁드립니다.
넵 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
요 커밋들도 collaboration 맞춰서 수정해 주세요
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
다른 커밋이 올라온 상태에서
수정해버리면 꼬여버리는군요 ㅎㅎ
다음부터는 컨벤션 잘 작성해서 올려주세요
😀 PR을 올리기 전 준비
💡 소속 그룹
해바라기반 (@CBNU-Nnet/team)
🤩 이번주 문제
문제
세준이는 양수와 +, -, 그리고 괄호를 가지고 식을 만들었다. 그리고 나서 세준이는 괄호를 모두 지웠다.
그리고 나서 세준이는 괄호를 적절히 쳐서 이 식의 값을 최소로 만들려고 한다.
괄호를 적절히 쳐서 이 식의 값을 최소로 만드는 프로그램을 작성하시오.
입력
첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 많이 연속되는 숫자는 없다. 수는 0으로 시작할 수 있다. 입력으로 주어지는 식의 길이는 50보다 작거나 같다.
🧑💻 어떻게 푸셨나요?
최소가 되려면 양수인 부분을 모두 괄호로 묶으면 된다.
따라서 수식의 특성상 수식의 -를 마주치기 전 모든 수를 sum변수에 더한 후에
-가 나오는 순간부터 있는 수들은 모두 빼는 변수 sub에 덧셈시키고
최종적으로 sum에서 sub를 빼서 결과값을 도출한다.
예시
1+2+3 => (1+2+3)
1-2+3-6 => 1-(2+3)-(6) 이처럼 - 이후는 +가 섞여있어도 결국 모두 뺴는 값에 포함된다.
✍️ 질문을 적어주세요.
질문할 부분이 있으면 알려주세요.(선택사항)
📖 참고 사항
문제를 해결할 때 참고하셨던 것을 첨부해주세요.(선택사항)