본문 바로가기

Programming Practice/C++37

프로그래머스 - 부분 문자열 문제 #include #include using namespace std;int solution(string str1, string str2) { int answer = 0; if(str2.find(str1) != string::npos) answer = 1; else answer = 0; return answer;}  .find()int형 등의 '숫자'는 찾을 수 없다. 문자열로 처리된 것만 가능.인덱스를 반환 한다. (0부터 시작)//문자 형태의 숫자 찾기string s = "a1b2c3";size_t pos = s.find('1'); //size_t는 양수만 표현 가능한 정수 타입//'1'은 ASCII 49로 처리 됨//결과 : 1//숫자를 그대로 find(.. 2025. 4. 10.
문자열 길이 구하기 strlen()? .length()? .size()? len()?언어마다 문자열 길이 구하는 함수의 이름과 적용법에 차이가 있다보니 여러 개 언어를 사용하다보면 헷갈릴때가 많다.일단 파이썬의 경우 문자열 길이를 구할 때len(str)의 형식으로 구한다.반면, C++은 str.length()나 str.size()로 구하게 된다. 차이점이 무엇이냐?일단 문법에 차이가 있다.//C++string str;str.length();//또는str.size(); #Pythonstr = input()len(str)Strlen()C스타일의 문자열 길이 구하는 strlen()는 \0(Null문자) 기준으로 길이를 센다.-> 메모리엔 "Hello"가 {'H','e','l','l','o','\0'}처럼 저장되고, strlen(.. 2025. 4. 10.
std::map #include 헤더를 이용해 사용할 수 있는 mapmap은 배열과 비슷하지만, 좀 더 확장성이 있다.Key-Value(키-값)쌍을 저장한다.Key는 배열처럼 연속적이지 않아도 되고 꼭 int가 아니어도 키 값을 가질 수 있는 큰 장점이 있다.원소 삽입과 동시에 정렬이 되어서 sort()가 필요하지 않다.map은 int가 아닐 수도 있기 때문에 일반적인 for루프는 사용하지 못하고, iterator(순회자)로만 가능하다.#define _CRT_SECURE_NO_WARNINGS#include #include #include using namespace std;int getInt(const char* prompt) { printf(prompt); int input; fseek(stdin, 0, SEEK.. 2024. 5. 21.
std::vector #include //을 해주면 vector를 사용할 수 있다.Vector는 유동적인 배열을 편히 사용할 수 있고 일반적인 배열을 사용하듯이 사용할 수 있다.일반적인 for 루프를 돌릴 수도 있고, iterator(순회자)를 통해 각각의 원소를 순회하면서 루프를 돌 수도 있다.그리고 순회자를 통해 에 있는 sort()함수를 사용하여 값을 정렬할 수도 있다.#include #include #include #include using namespace std;int main(){ vector v = {1, 2, 10}; v.push_back(20); //맨 뒤에 값을 넣어주는 push_back() v.push_back(12); v.push_back(7); for(int .. 2024. 5. 21.
LNK 에러 Visual Studio에서 코드를 작성하다보면 LNK2019등과 같은 링크에러를 마주할 때가 있다.LNK, 말 그대로 링크할때 어딘가에서 에러가 났다는 뜻.C++코드를 빌드(넓은 의미에서 컴파일) 하는 과정에서 링크 과정을 거치는데 이때 .obj라는 파일이 생성되게 된다. (오브젝트 파일이란 컴파일러나 어셈블러가 소스파일을 컴파일 또는 assemble 해서 생성하는 파일을 말한다). 그런데 이 .obj 파일은 코드 전체에서 실행되는 것이 아니라 소스 코드 파일 각각에 한해서 실행 된다. 그리고 이 모든 과정을 거쳐서 .exe파일로 변환하는 과정에서 모든 파일을 비로소 전체적으로 검사하게 되는데 이때 정의 된 부분이 중복되게 되면 LNK에러가 발생한다.선언과 정의는 N:1 관계여만 하는데, 정의가 이 파.. 2024. 5. 7.
백준 2563 색종이 C++ #include using namespace std; int main(){ int paper[100][100] = {0, }; int n, x, y; int area = 0; cin >> n; for(int i = 0; i > x >> y; for(int j = x; j < x+10; j++){ for(int k = y; k < y+10; k++){ paper[j][k] = 1; } } } for(int j = 0; j < 100; j++){ for(int k = 0; k < 100; k++){ if(paper[j][k] == 1) area += 1; } } cout 2023. 9. 17.
백준 24723 녹색거탑 C++ https://www.acmicpc.net/problem/24723 24723번: 녹색거탑 Naver D2를 아시나요? D2는 For Developers, By Developers의 약자로, 개발자들을 위해 개발자들이 직접 만들어 가고 있는 네이버 개발자 지원 프로그램입니다. 네이버가 축적한 기술과 지식을 공유하고, 외 www.acmicpc.net 경우의 수는 2의 n제곱 #include #include // pow()사용 위해 using namespace std; int main(){ int n; cin >> n; cout 2023. 9. 16.
백준 1259 팰린드롬수 C++ 코드 #include using namespace std; int main(){ string s; while(1){ cin >> s; if (s == "0") break; int n = 0; for(int i = 0; i < s.length()/2; i++){ if(s[i] == s[s.length()-1-i]) n++; else continue; } if(n==s.size()/2) cout 2023. 9. 12.
백준 2920 음계 C++ 문제 다장조는 c d e f g a b C, 총 8개 음으로 이루어져있다. 이 문제에서 8개 음은 다음과 같이 숫자로 바꾸어 표현한다. c는 1로, d는 2로, ..., C를 8로 바꾼다. 1부터 8까지 차례대로 연주한다면 ascending, 8부터 1까지 차례대로 연주한다면 descending, 둘 다 아니라면 mixed 이다. 연주한 순서가 주어졌을 때, 이것이 ascending인지, descending인지, 아니면 mixed인지 판별하는 프로그램을 작성하시오. 입력 첫째 줄에 8개 숫자가 주어진다. 이 숫자는 문제 설명에서 설명한 음이며, 1부터 8까지 숫자가 한 번씩 등장한다. 출력 첫째 줄에 ascending, descending, mixed 중 하나를 출력한다. 예제 입력 1 1 2 3 4 5.. 2023. 9. 10.