Programming Practice160 프로그래머스 <배열의 원소만큼 추가하기> def solution(arr): x = [] for i in arr: x += arr[i]*int(arr[i]) return x 리스트 컴프리헨션 중첩 구조def solution(arr): return [i for i in arr for _ in range(i)]arr의 각 요소 i를 i번 반복해서 리스트에 담는다.[값 for 바깥루프 for 안쪽루프] 구조[i...] 결과 리스트에 넣을 값은 i다.[.. for i in arr ..] 바깥루프 : arr의 각 요소 가져오기[... for _ in range(i)] 안쪽루프 : i만큼 반복하기[리턴값 for 바깥요소 in 컬렉션 for 반복 in range(n)]#리스트 '컬렉션'의 각 원소 '바깥요소'를 n번 '.. 2025. 4. 17. 프로그래머스 <배열 비교하기> Lv.0 def solution(arr1, arr2): n1 = sum(arr1) n2 = sum(arr2) if len(arr1) > len(arr2): return 1 elif len(arr1) n2: return 1 elif n1 간결하게def solution(arr1, arr2): return ( 1 if len(arr1)>len(arr2) else -1 if len(arr1)sum(arr2) else -1 if sum(arr1) 2025. 4. 17. 프로그래머스 <배열의 길이에 따라 다른 연산하기> def solution(arr, n): if len(arr) % 2 == 0: for i in range(1, len(arr) + 1, 2): arr[i] += n return arr else: for i in range(0, len(arr) + 1, 2): arr[i] += n return arr 좀 더 간결하게def solution(arr, n): s = 1 if len(arr) % 2 == 0 else 0 for i in range(s, len(arr), 2): arr[i] += n return arr 2025. 4. 16. 프로그래머스 <뒤에서 5등까지> 요즘 목표는 최대한 클린코드로 짜기.기초 문제부터 차근차근 정석대로 줄줄이 읊기보다는 최대한 깔끔하게 짜려고 연습 중이다. def solution(num_list): return sorted(num_list)[:5] 2025. 4. 16. 프로그래머스 - 부분 문자열 문제 #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. 이전 1 2 3 4 5 6 7 ··· 18 다음