Knowledge/C++
-
comparison between signed and unsigned integer expressions 원인 및 해결 방법Knowledge/C++ 2019. 7. 16. 14:07
C++ sizeof() 함수와 strlen()의 차이 BOJ 8958번 문제 ( https://www.acmicpc.net/problem/8958 ) 를 풀면서 알게된 것 먼저 이 개념을 확실히 해야한다. sizeof() - 실제로 차지하고 있는 메모리의 크기를 구한다. strlen() - 문자열의 길이를 구한다.. takeknowledge.tistory.com 이 역시 위 포스팅과 같이 BOJ 8958번 문제 ( https://www.acmicpc.net/problem/8958 ) 를 풀면서 알게된 것 strlen()을 활용해 문제 풀고 맞았습니다 판정까지 받았지만 1 2 3 4 Main.cc: In function ‘int main()’: Main.cc:19:17: warning: comparison..
-
C++ sizeof() 함수와 strlen()의 차이Knowledge/C++ 2019. 7. 16. 13:40
BOJ 8958번 문제 ( https://www.acmicpc.net/problem/8958 ) 를 풀면서 알게된 것 먼저 이 개념을 확실히 해야한다. sizeof() - 실제로 차지하고 있는 메모리의 크기를 구한다. strlen() - 문자열의 길이를 구한다. 이 때 길이는 NULL 문자를 만날 때까지의 문자수를 센다. unsigned int ( 부호 없는 정수 ) 를 반환한다 이 개념을 정확히 인지하지 못하고 있던 나는 아래와 같은 코드를 작성해 슬랙에 질문을 올렸다 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 32 33 34 35 #include #include using namespace st..
-
C++ 변수 여러개를 선언과 동시에 초기화 할 때 주의할 점Knowledge/C++ 2019. 7. 16. 10:29
BOJ 3052번 문제 ( https://www.acmicpc.net/problem/3052 )를 풀다가 알게된 것 포스팅하기도 민망하지만 아무튼 이것때문에 틀렸으니 포스팅하면서 복기해본다. C++관련해 대충 훑어보면서 int a,b,c = 0; 이렇게 선언하면 a,b,c 모두 0으로 초기화 되는 걸로 이해했는데 그렇지 않다 위와 같이 선언했다면 c만 0으로 초기화 되고 a,b는 초기화 되지 않은 상태다 만약 위와 같이 한줄에 다 선언하면서 다 초기화 시키고 싶다면 int a=0,b=0,c=0이라고 선언하면서 각각 초기화해야한다. 포스팅 끝. 을 이렇게 내기는 아쉬우니 코드 하나 덧붙이자면 나는 위의 초기화 이슈를 해결한 후 아래와 같이 코딩해서 문제를 풀었는데 1 2 3 4 5 6 7 8 9 10 11..
-
C++ 최소값과 최대값을 구하는 함수Knowledge/C++ 2019. 7. 16. 09:41
BOJ 10818번 문제 ( https://www.acmicpc.net/problem/10818 ) 를 풀며 알게된 것 한번 삽질은 했지만 문제는 쉽게 풀었다. 이 포스팅거리는 그 이후 다른 분들의 코드를 보다가 얻은 건데 나는 둘 중 작은 수와 큰 수를 구하는 부분을 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 32 33 34 35 #include int main(void) { int n, input, min, max; //배열크기,입력값,최소값,최대값 scanf("%d",&n); int arr[n]; // n만큼 배열 생성 for(int i=0; i
-
C++ EOF 처리 방법 ( 백준 10951 A+B - 4 )Knowledge/C++ 2019. 7. 11. 10:12
백준 10951번 문제 - A+B - 4 ( https://www.acmicpc.net/problem/10951 )를 풀면서 알게 된 것 이 문제는 입력의 마지막 조건이 어떤건지를 알려주지 않아서 JAVA의 hasNext()와 같은 게 C++에서는 무엇인지 알아야 했습니다 생각보다 방법이 다양했는데 케이스별로 간단히 정리해서 포스팅해봅니다. 1. scanf()가 입력받은 인자의 갯수를 리턴하는 특성을 활용하는 방법 1 2 3 4 5 6 7 8 9 10 11 #include int main() { int a, b; while (scanf("%d%d", &a, &b) == 2) // scanf는 입력받은 갯수를 리턴한다 // 만약에 scanf("%d",&a); 에서 입력이 제대로 들어왔다면 1이 리턴된다. ..
-
문자열을 출력하고 줄을 바꿔주는 puts() 함수Knowledge/C++ 2019. 7. 8. 17:43
BOJ 1330번 문제 두수 비교하기 ( https://www.acmicpc.net/problem/1330 ) 를 풀면서 알게 된 것! C++에서 문자열을 출력할 때는 C의 유산인 puts() 함수를 사용할 수도 있다. 간단히 코드로 보자 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 #include // scanf(), printf()와 같이 puts() 함수를 쓸 때도 stdio.h를 include 해줘야 한다. int main(void) { printf("문자열을 출력하고 줄을 바꿔 줘야 할 때 \n"); puts("printf 함수가 아닌 puts함수를 사용하면"); printf("\\n을 쓰지 않아도 자동으로 줄이 바뀐다"); /* 문자열을 출력하고 줄을 ..
-
C++ 의 입력과 출력 ( cin / cout / scanf / printf )Knowledge/C++ 2019. 7. 7. 20:31
BOJ 2588번 문제( https://www.acmicpc.net/problem/2588 ) 를 풀면서 알게 된 것 1단계 레벨에서 이 문제 이전까지는 머리를 쓸 필요가 조금도 없었기에 ( 이 놈의 건방...) 답을 맞히고도 다른 분들 코드를 보지 않았는데 이 문제는 다 풀고나서 다른 분들이 어떻게 구현해놨는지 궁금해 코드를 살짝 봤다. 다행히(?) 로직은 아무런 차이가 없었지만 나는 입출력을 cin과 cout으로 처리한 반면 다른 분들은 입출력을 scanf 와 printf를 사용해 처리하고 있음을 확인할 수 있었다. TCP스쿨 강의에 나와있던 cin과 cout밖에 모르던 C++린이인 나는 바로 이 입출력 방식간의 차이에 대해 검색해봤는데 그 중 'C/C++ 입출력 속도 비교' ( https://cup..
-
C++ double 자료형 나머지연산(%)Knowledge/C++ 2019. 7. 5. 10:58
BOJ 10430번문제 ( https://www.acmicpc.net/problem/10430 )를 풀면서 알게 된 것 부끄러운 고백이지만 나는 이 문제를 본 순간 나누기 연산과 나머지 연산을 혼동했다. 대충 보고 아 뭐 같은지 확인 하면 된다니 그냥 C를 더블로 선언해서 나눠보면 되겠네? 하고 쉽게 접근해서 코드 짜고 돌려보니 컴파일 에러가 났다. 그제서야 정신 부여잡고 다시 코드를 찬찬히 보면서 이것 저것 찾아보니 자바와 C++에서의 나머지 연산(%) 사용 조건이 서로 달라 발생한 문제였다. 예를 들어 아래와 같은 코드를 자바로 짜면 에러가 나지 않는다 1 2 3 4 5 6 7 8 9 public static void main(String[] args) { double a = 10.0; double ..