바깥 루ㅜ프 4번 더 돌게됨
안쪽에서 반복문으로 처리 x > 한개씩 처리(자신도 빼주어야한다.)
Math.max 를 써야했는가 . 함수호출에 따른 오버헤드가 발생한다.
높이차를 돌고 또다시 loop를 돌이유가 있나
max대신 if문장을써라
vector.reserve(N); 잘했다. 왜?
if 문에서 좌우 중에 낮은게 하나만 발생해도 break 해줘야한다.and 조건의 특징은 첫뻔재 조건이 False가 나오면
뒤에꺼는 검사안한다.
vector : 가변사이즈 배열 but 그래서 오버헤드가 발생하기도한다. 그부분을 상쇄하기 위해서 Reserve (ㅜ)dmf
으 ㄹ사용해서 공간을 확보해놓느낟.
사실 vector <int> buildings(N)했으면 reserve안햇음 된다.
그리고 사실 크기 알고있으니 배열쓰면된다.
그리고 TC내에서 초기화시키면 매 TC마다 초기화안해줘도 되서 좋다.
sprintf 출력량 많을떄, 포맷을 가진 출력을 할댸
[해쉬]
삭제 할때 주의 : 해당키를 삭제한다고 해서 삭제만 하면 안된다. ( 체인으로 연결되어있다면 )
컴퓨터에서의 문자 표현
[문자열 길이]
const char *str) 로 인수받고
int len=0 ;
for(; str[len]; len++);
return len
[문자열 복사] // '\0' = null = 0 ? 즉 다시 말해서 c와 c++에서 NULL == 숫자 0 == '\0'는 동일한 의미로 쓰인다.
char str2[100] = {0,};
(char *dest, const char *src) 인자로 받아서
while(*src){
*dest = *src; //인덱스를 쓴다면 굳이 이거 안해도 될거다.
src++;
desc++;
}
*desc = '\0'
return org;
[비교]
str1 > str2 = 1
== = 0
< = -1
포인터로 해도 되는데 인덱스가 더 편하다
int i =0 ;
while(str1[i] != '\0' && str1[i]==str2[i]){
i++;
}
return str1[i]-str2[i];
[concat]
목적지의 델리미터('\0')d을 찾아야한다.
while(*dest) dest++;
여기서 빠져나온순간 포인터는 dest 의 딜리미터에 가있다.
while(*src){
*dest =*src;
dest++;
src++;
}
마지막에 딜리미터 추가.
[리버스]
사진참고
[strToInt]
value = value *10 + (ch - '0');
[intTostr]
뒤집기 한다.
tip) 2로나누는것보다bit연산이 좋다.
라이브러리 사용 > 개인 코드 사용 > 인라인화
문자열 \0 까지 반복
문자열뒤집기 중간기준으로 좌우 변경
reverse 만들어라. stringBuffer 클래스의 reverse사용
문자열비교 strcmp() 함수 ( 얘는 인덱스로 , 포인터로 구현할수있다.)
믄지얄 숫자로 atoi itoa 있다. stdlib.h 사용
문자열 찾기
=======================
find : string 자료구조에서 파인드는 이터레이터를 반환한다.
sentence.erase(0, sentence.find(target)+1);
sentence.find(target)+1를 변수로 담으면 두번이나 find 안해도된다.
======================
이차원 배열도 일차원배열로 찾을 수 있다.
'끄적끄적 ( 비공개 )' 카테고리의 다른 글
포큐 c++ 정리및 질문 리스트 (0) | 2023.01.24 |
---|---|
안드로이드 5일차 (0) | 2022.12.02 |
기술면접 질문 정리 (0) | 2022.05.12 |
취업전 해보고 싶은것 (0) | 2020.09.24 |
스프링 프로젝트를 하면서 느끼는 점들 (0) | 2020.07.01 |