전체 글 썸네일형 리스트형 [백준] 1546번 : 평균 - C/C++ 문제 풀이 순서는 아래와 같다.1. 시험 본 과목의 수 N 입력 받기2. 배열에 넣기3. 새로운 평균을 통해 성적 구하기 점수를 1차원 배열에 넣을 건데,오늘은 계속해서 유용하게 쓰일 만한 팁을 소개하고자 한다. 바로 const 로 선언해주기const int NMAX = 1000;문제에서 과목의 개수가 1000 개가 넘어가지 않도록 지정했기 때문에const 형태로 선언해주면, 배열은 아래처럼 써줄 수 있다.int ary[NMAX]; 그냥 아래처럼 쓰면 안 되나요?int ary[1000]; 상관은 없다.내가 들었던 강의에서는나중에.. 더 어려운 문제를 풀게 되면제시한 수의 범위를 넘어서는 것을 방지하기 위해const로 선언한다고 하긴 했다. 코드 스타일은 사람마다 다르니참고만 해도 좋다. 1차원 배열에 값.. 더보기 [C++] 형 변환 string형 --> 숫자형(int, long, double, float)#include string num = "1234";string num_dec = "1234.56";int inum = stoi(num);long lnum = stol(num);double dnum = stod(num_dec);float fnum = stof(num_dec); 숫자형(int, long, double, float) --> string형#include int inum = 1234;long lnum = 1234;double dnum = 1234.56;float fnum = 1234.56f;string intToString = to_string(inum);string longToString = to_string(lnum).. 더보기 [백준] 11720번 : 숫자의 합 구하기 - C/C++ 문제 풀이 과정은 아래와 같다.1. 숫자의 개수 N 입력2. 공백 없이 N개의 숫자 입력3. 문자열 --> 숫자형 변환 1번과 2번 과정은 쉽게 해결할 수 있을 것이다.백준 11720번을 해결하는 핵심은 다음과 같다. 문자열을 숫자형으로 변경하려면 아스키코드(ASCII)를 이해해야한다는 것이다.아스키코드에서 같은 의미의 문자와 숫자의 코드값 차이는 48이다.문자열 '1'은 아스키코드 값으로는 49 이기 때문에숫자 1로 변환하기 위해서는 -48 혹은 -'0'의 연산이 필요하다. 필자는 -48 대신 -'0'을 선택했다.아래는 str[i]를 정수로 계산하여 sum에 누적하는 방법의 코드이다.sum += str[i]-'0'; 전체 코드#include #include //숫자의 합using namespace .. 더보기 [자료구조] 배열과 리스트 그리고 벡터 코딩 테스트에서 주어진 문제를 해결하기 위해서는사용해야할 알고리즘 그리고 자료구조가 중요하다.필자는 자료구조에 대한 정리글을 써보려한다. 백준에서 문제를 해결하면서, 혹은 강의를 들으면서배열과 리스트는 똑같은 개념이 아닌가? 하며매일 헷갈렸다.이번 기회에 그 개념을 바로 잡아보자. 배열메모리의 연속 공간에 값이 채워져 있는 형태의 자료구조배열의 값은 인덱스를 통해 참조선언한 자료형의 값만 저장 가능배열의 특징인덱스를 사용하여 값에 바로 접근 가능새로운 값을 삽입하거나 특정 인덱스에 있는 값 수정 어려움.값을 삽입하거나 삭제하려면 해당 인덱스 주변에 있는 값을 이동시켜야 함.배열의 크기는 선언할 때 지정.한번의 선언 가능, 크기를 늘리거나 줄일 수 없음.구조 간단 리스트: 값과 포인터를 묶은 노드를.. 더보기 [백준] 2167번 : 2차원 배열의 합 - C/C++ 문제 해결 과정은 아래와 같다.1. 배열 입력2. 합을 구할 K 입력 받고 정수 네 개 입력 받기3. 합 구하기 벡터를 이용하여 동적으로 2차원 배열을 생성할 것이다.vector> ary(n + 1, vector(m + 1, 0)); ary[n+1][m+1] → (1-based index)로 사용하기 위해 입력받은 n,m을 각각 1씩 증가시킨다누적합 계산을 쉽게 하기 위해서 모든 값을 0으로 초기화 시킨다. -2차원 누적합(prefix sum)???수들의 나열에서 특정 구간의 합을 의미하는 prefix sum은보통은 1차원 배열에서 i부터 k 인덱스 사이의 값을 구하는 데에 이용된다. 부분합은 아래와 같이 코드를 작성할 수 있다.for (int i = 1; i > num; ary[i][j] =.. 더보기 [백준] 10814번 : 나이순 정렬 - C/C++ 내가 생각한 문제 해결 순서는 아래와 같다. 1. 회원수 n 입력하기2. 회원의 나이와 이름 입력하기3. 나이순으로 출력하기 문제는 간단했는데이걸 2차원배열로 입력으로 받아버리면.. 시간 초과가 뜰 것 같았다. 그래서 방법을 생각하다가얼마전 알고리즘 강의에서 배운 pair 를 사용해보기로 했다. pair 선언은 아래처럼 할 수 있다.vector> vector; -pair??pair 가 기본 구조이다.특징은 아래와 같다. 저장한 값은 .first 그리고 .second로 접근할 수 있다.2개의 값을 순서쌍 형태로 저장할 수 있다.정렬에 용이하게 사용된다. 우리는 입력 받은 n 만큼의 쌍을 입력 받아야하니까for 문을 돌려준다.for (int i = 0; i > num >> str; vector.empl.. 더보기 [백준] 2947번 : 나무 조각 - C/C++ 문제를 읽고 어떻게 접근해야할지 생각했는데생각보다 간단했다. 입력을 받고, 첫 번째와 두 번째 수를 비교하고 그 다음 수를 비교하고..근데 문제가 생겼다. 동작이 잘 될 줄 알고if문으로 구현했는데 한 번씩만 인접한 배열을 비교하는 것이었다. 결국 출력은 아래처럼.. 나오게 된다.틀렸다는 뜻. 간단하다고 말했던 걸 후회한다.나는 풀이과정을 다시 생각해야했다.. 많은 고민을 하다가 if문이 아닌 다른 방법이 있을까.. 했는데bubble sort(버블 정렬)이 생각났다. 버블 정렬로 풀어보자.버블 정렬의 핵심은 다음과 같다. 버블 정렬은 인접한 두 개의 원소를 비교하여, 마지막 원소까지 늘려가며 정렬하는 알고리즘이다. 알고리즘은 아래의 4단계를 거쳐 실행된다. 1. 첫 번째 원소와 두 번째 원소 비교2. 첫.. 더보기 [백준] 10817번 : 세 수 - C/C++ 문제를 보자마자 어떻게 풀어야할지 생각이 딱 난다면,,,그건 구현 문제일 가능성이 크다.(정말 개인적인 생각) 문제에서 말하는 대로 따라가면 지난번 글과 같이 쉽게 해결 가능하다. 두 가지 방식으로 위의 문제는 해결 가능하다. 1. int형으로 정수 A,B,C 입력 받아서 비교하기2. int형의 배열에 값 입력받아서 정렬 후 비교하기 다른 방법이 있을 수 있겠다만 나는 두 가지 밖에 생각이 안 났다. 문제에서 두 번째로 큰 정수를 출력하라고 했다.1번 방식으로 풀게 되면 if문을 사용해서 수를 직접 비교해야겠지만,2번 방식으로 풀게 되면 정렬해서 풀 수 있다. 나는 복잡한 건 싫다.내장함수를 최대한 활용하겠다.2번 방식으로 풀어보자. 배열에 값 입력하기int ary[3]; for(int i=0;i.. 더보기 이전 1 ··· 4 5 6 7 8 다음