일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- unity #2d-game
- 백준
- VS #비주얼스튜디오
- 유데미 #udemy #웅진씽크빅 #스나이퍼팩토리 #인사이드아웃 #미래내일일경험 #프로젝트캠프 #부트캠프 #react #리액트프로젝트 #프론트엔드개발자양성과정 #개발자교육과
- flutter #플러터
- flutter #todolist
- #유데미 #udemy #웅진씽크빅 #스나이퍼팩토리 #인사이드아웃 #미래내일일경험 #프로젝트캠프 #부트캠프 #react #리액트프로젝트 #프론트엔드개발자양성과정 #개발자교육과정
- flutter #플러터 #분석
- baekjoon #백준 #boj
- flutter #firebase #플러터 #파이어베이스 #연동
- flutter #app #취준
- flutter #깃
- 백준 #boj
- 비주얼스튜디오 #코드스니펫
- 인턴 #프론트엔드 #개발자 #프론트엔드개발자 #취준
- boj #baekjoon #c++
- unity #2d-game #minigame #vscode
- flutter #git
- git #unity #깃허브
- Flutter
- boj #baekjoon
- boj #c++
- 플러터 #flutter #restful #rest api
- 백준 #c++
- 로컬저장소 #이름변경
- 비주얼 스튜디오 #vs #visual studio
- baekjoon #boj #c++
- flutter #상태관리
- 백준 #boj #baekjoon
- firebase #파이어베이스
- Today
- Total
목록[BOJ] 코드 모음/C++_learning 문제집 (87)
cococo-coding
문제 분석 그리디 알고리즘 문제이다. 이 문제로 처음 접했는데, 그 순간의 최적의 해를 구하는 알고리즘이다. 보통 위와 같이 '최대한 적은~ 최대한 많은~' 이런 문제형태로 나온다고 한다. 이 문제 역시 가장 적은 동전 개수로 k를 구하는 문제이다. 벡터에 동전가치들을 넣고, for문으로 k를 나눈 몫과 나머지를 계속해서 구하면 된다. 알고리즘 설계 int형 벡터를 이용해 동전 가치를 입력받아 초기화한다. 벡터의 끝부터 k를 나눠본다. 나눈 몫은 동전의 개수가 되므로 coin에 누적해서 쌓고, 나눈 나머지는 새로운 k로 넣어주는 방식으로 계속해서 k를 나눈다. 만약 k가 0이 되면 break로 반복문을 탈출한다. 코드 #include #include using namespace std; /* 그리디 알고..
문제 분석 입력받은 t만큼 a+b를 출력하면 되는 간단한 문제이다. 이때 입력에 ','가 들어가있어 이 부분을 처리해주어야 한다. 알고리즘 설계 입력에 들어가있는 콤마(,)를 char comma;로 선언해주고, cin을 받을 때 a와b사이에 끼워주었다. 코드 #include using namespace std; int main() { //1 int t; cin >> t; //2 int a, b; char comma; while (t--) { cin >> a >>comma>> b; cout a>>b로 입력받으면 알아서 콤마를 제외할 줄 알았다. 그런데 a는 인식하고 콤마이후는 b로 인식하지 못 하는 상황이 발생했다. 구글링을 해보니 콤마를 직접 지정하고 cin안에 넣어주는 형식이 많이 보였다. 입력cin을..
문제 분석 x와 y를 입력받으면 역순으로 뒤집은 상태로 더한다. 더한 결과를 다시 역순으로 뒤집어 출력하는 문제이다. 알고리즘 설계 모든 자리수를 역순으로 만드는 함수를 Rev로 따로 정의해서 필요할때마다 호출해서 사용하도록 했다. string과 int형 변환을 왔다갔다해야해서 이 부분이 번거롭다. 1. 우선 처음 입력받는 수는 int로 받고, 역순으로 바꾸기전에 to_string으로 형변환한다. 2. 역순으로 바꾸기 위해 reverse함수를 사용할 건데, int형으로는 사용하지 못 하므로 미리 string으로 바꾸는 것이다. 3. 그리고 reverse함수로 역순으로 바꾼 후에 다시 stoi함수로 int형으로 돌려준다. int형으로 다시 돌리는 이유는 덧셈 연산을 해야하기 때문이고, 특정 문자(001)에..
문제분석 n을 입력받아 n번 출력하는 문제이다. 이때 답이 길어지면 답의 앞의 m자리를 출력한다는 조건이 이해가 어려웠다. 우선은 n을 n번 반복한 문자열을 만들고, 이 길이와 m을 비교하는 방법을 이용했다. 알고리즘 설계 출력할 문자열을 string s로 선언했다. for문을 이용해서 string으로 변환한 n을 s에 계속해서 붙였다. 이때 to_string으로 int형을 string으로 변환해주어야한다. s의 길이와 m을 비교해서 만약 m이 더 짧으면 s의 앞부터 m까지 잘라서 출력하도록 s.substr(0,m)코드를 작성하였고 아니면 그냥 s를 출력했다. 코드 #include #include using namespace std; /* 1. n m을 입력받음 2. n을 n번 붙인 문자열을 만든다. 3..
문제 분석 두 문자열을 입력받고, 각 자리의 문자끼리 위치를 계산해 출력하는 문제이다. 입력받은 문자열이 x, y순이라면 1) x가 y보다 작거나 같은 경우는 y-x로 2) x가 y보다 큰 경우는 (y+26)-x로 거리를 계산한다. 이때 아스키코드로의 알파벳은 A=65, B=66...Z=90 이고 우리가 문제에서 사용할 알파벳은 A=1, B=2, ... Z=26이므로 이 부분도 고려해준다. 알고리즘 설계 우선 처음 입력받는 문자열은 s1, 뒤에 입력받는 문자열은 s2로 지정한다. s1과 s2의 문자열 길이는 동일하므로, s1의 문자열 길이만큼을 for문으로 돌려준다. 각각 문자에서 64씩을 빼주어 아스키코드->우리가 실 사용할 값으로 변경해준다. 변경한 값으로 s1(=x)가 작거나 같은경우와 s1이 더 ..
문제 분석 한 줄의 암호를 입력받아(줄바꿈 기준) 거꾸로 출력하는 문제이다. END가 입력되면 끝내야한다. 알고리즘 설계 우선 while(1)문으로 반복문을 설정하고, END가 입력되면 break;문으로 끝냈다. getline(cin,s)으로 암호들을 입력받았고, for문으로 문자열의 끝-1부터 0까지 반복해서 출력했다. 이때 문자열의 길이가 n이면 인덱스가 0부터 시작하므로, 끝은 n-1이라는 부분을 유의하자 코드 #include #include using namespace std; /* 1. 암호를 입력받는다. 2. 각 암호를 해독한다. 3. 해독한 암호를 출력한다. */ //size()는 컨테이너의 크기를 반환 //length()는 주로 string클래스, 해당 문자열 길이 반환 int main()..
1924번과 2948번 모두 월과 일을 입력받아 무슨 요일인지 출력하는 문제이다. 해결 알고리즘이 동일하기 때문에 하나의 글로 묶어 써보려고 한다. 문제 분석 x월 y일을 입력받아 해당일이 어떤 요일인지 출력한다. 월-> 일수로 변환하고, 입력받은 일(y)까지 더해서 요일을 구하려고 한다. 알고리즘 설계 각 월의 일수를 넣은 int형 배열을 선언해주고, 요일을 넣은 string형 배열도 만들어준다. 최종적으로 구할 totalday변수는 0으로 초기화해준다. 월의 일수를 담은 배열에서 입력받은 월까지의 일수를 totalday에 더해준다. 그리고 입력받은 y일을 totalday에 더한다. totalday를 7로 나누어 day배열에 맞춘 요일을 출력한다. 코드 1) 2948번 #include using nam..
문제 분석 백준의 별찍기 문제들 중 하나이다. 나에게는 꽤 난이도가 있었다고 느껴졌는데, 한줄씩 분류해서 코드를 짜는 방법을 추천한다. n을 입력받으면, 아래 그림과 같이 삼각형 테두리 형태로 별을 찍어야한다. 알고리즘 설계 첫번째 줄과 가운데 줄, 마지막 줄로 구분해서 코드를 짜보았다. 우선 마지막줄은 공백없이 별을 출력하므로, 1~2n-1동안 *을 출력하도록 코드를 짰다. //마지막줄 for (int i = 1; i > n; //2 막줄제외 for (int i = 1; i 0; j--) { cout