일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 #minigame #vscode
- flutter #app #취준
- 백준 #c++
- boj #c++
- 인턴 #프론트엔드 #개발자 #프론트엔드개발자 #취준
- flutter #git
- firebase #파이어베이스
- flutter #플러터 #분석
- flutter #깃
- flutter #todolist
- boj #baekjoon
- 유데미 #udemy #웅진씽크빅 #스나이퍼팩토리 #인사이드아웃 #미래내일일경험 #프로젝트캠프 #부트캠프 #react #리액트프로젝트 #프론트엔드개발자양성과정 #개발자교육과
- baekjoon #백준 #boj
- VS #비주얼스튜디오
- 로컬저장소 #이름변경
- flutter #상태관리
- boj #baekjoon #c++
- baekjoon #boj #c++
- 비주얼 스튜디오 #vs #visual studio
- flutter #firebase #플러터 #파이어베이스 #연동
- #유데미 #udemy #웅진씽크빅 #스나이퍼팩토리 #인사이드아웃 #미래내일일경험 #프로젝트캠프 #부트캠프 #react #리액트프로젝트 #프론트엔드개발자양성과정 #개발자교육과정
- flutter #플러터
- 백준 #boj
- unity #2d-game
- 백준
- Flutter
- 플러터 #flutter #restful #rest api
- 비주얼스튜디오 #코드스니펫
- git #unity #깃허브
- 백준 #boj #baekjoon
- Today
- Total
목록[BOJ] 코드 모음 (110)
cococo-coding
문제 분석 파일을 덮어씌울 횟수 n에 따라 다른 풀이로 접근해야 한다. 기존파일을 비트단위로 덮어씌우고, 한 번 덮어씌울 때 0인 비트는 1, 1인 비트는 0으로 덮어씌워진다. 따라서 n이 홀수면 처음 파일과 최종 파일의 비트가 다 달라야 삭제 성공이며, n이 짝수라면 처음 파일과 최종 파일의 비트가 다 같아야 삭제 성공이다. 알고리즘 설계 우선 n이 짝수인지 홀수인지에 따라 분기문을 설계했다. 그리고 최종적으로 삭제가 성공했는지 출력할 문자열을 result로 설정하고 0으로 초기화했다. 처음 파일은 ori, 삭제한 뒤의 파일은 after로 설정했다. 우선 덮어씌우는 횟수가 홀수인 경우, for문으로 ori과 after의 인덱스를 비교해서 같은 문자가 있는 경우 삭제가 안된 것이므로 result에 Del..
문제 분석 글자와 숫자로 이루어진 자동차 번호판을 입력받아 각각의 가치를 계산하는 문제이다. 이때 자동차 번호판의 길이는 일정하며, LLL-DDDD형식으로 이루어져있다. (LLL : 글자, DDDD: 숫자) LLL부분과 DDDD부분의 가치를 계산하고, 절댓값을 씌운 차를 100과 비교하면 된다. 알고리즘 설계 자동차 번호판의 길이가 고정되어 있고, 앞의 세 글자와 뒤의 네 숫자로 분류되어 있어서 형식적인 부분에서 코드를 짜기 편했다. 번호판을 string형으로 선언하고 입력받는다. 1. LLL 부분 for문을 이용해 인덱스 0~2까지 반복했다. 이때 A=0, B=1.. 이므로 65씩을 빼줘야한다는 점, 지수형식으로 되어있는 부분은 따로 j라는 변수를 설정해서 한 번씩 sum을 구할때마다 j--;로 빼주면..
문제 분석 두 정수간의 최대공약수와 최소공배수를 찾는 문제이다. 구글링을 해본 결과 유클리드 호제법이 가장 유명하고 많이 쓰이길래 나도 그 방법으로 풀었다. 또 최대공약수와 최소공배수간의 관계식을 참고했다. 최대공약수*최소공배수 = 두 수의 곱 알고리즘 설계 위에서 설명한대로, 유클리드 호제법과 두 관계식을 이용해서 풀었다. 최대공약수와 최소공배수를 찾는 코드는 함수로 작성하여 각 케이스마다 함수를 적용하여 풀었다. 코드 #include using namespace std; /* 1. 테스트개수t를 입력받는다. 2. 정수 a와 b를 입력받는다. 3. 각 최소공배수와 최대공약수를 출력한다. */ //최대공약수 gcd int gcd(int a, int b) { int c = a % b; while (c !=..
문제 분석 요약 n개의 단어를 입력받아 1. 길이가 짧은 애들 먼저 2. 길이가 같다면 사전 순으로 정렬 3. 중복은 없어야 함 위 세가지 조건들을 만족해서 한줄에 하나의 단어씩 출력하는 문제이다. 알고리즘 설계 단어를 저장할 string형 벡터를 선언하고, 크기는 n으로 설정한다. n번만큼 단어를 입력받아 벡터에 쌓는다. 위의 세가지 조건들을 구현하기 위해 sort정렬을 이용할건데, 기본적으로 sort(v.begin(), v.end())와 같이 쓰면 사전순으로 오름차순 정렬이 된다. 그렇지만 우리는 그전에 길이순 정렬이 먼저이므로, sort의 세번째 인자인 cmp를 추가해서 길이순 정렬을 구현한다. sort(v.begin(), v.end(), cmp); cmp는 메인함수 이전에 다음과 같이 정의했다. ..
풀이 첫번째 입력받는 문자열을 steady로 받고, result문자열에 복사해둔다. result문자열은 추후에 출력될 결과인데, 앞으로 입력받을 문자열(tmp)들과 계속 비교해서 다른 부분만 '?'로 치환할 것이다. 코드 #include #include using namespace std; /* 1. 파일개수 n을 입력받는다. 2. n개의 파일을 입력받는다. 3. 패턴을 찾아 출력한다. */ int main() { //1 int n; cin >> n; //2 첫번째 문자열을 기준으로 string steady; cin >> steady; string result = steady; //결과 문자열에 첫번째 문자열 넣어줌 //cout
풀이 약수가 몇 번째인지 셀 카운트변수와 벡터를 생성해서 풀어준다. 입력받는 변수 n, k와 헷갈리지 않도록 주의하자 약수를 넣을 벡터를 생성해준다. vector v(n); 이때 벡터의 크기 n을 설정해주지 않은 상태로 인덱스로 벡터에 접근하게 되면 vector subscript out of range라는 오류가 발생한다. for문을 이용해 1부터 n까지 n을 나누면서 약수를 구한다. 0으로 나눠떨어지는 경우가 약수이므로, cnt변수를 증가시키고 v[cnt]에 i를 넣어준다. 그리고 cnt < k인 경우는 0을 출력, 이외에는 정상적인 케이스이므로 v[k]를 출력해준다. 코드 #include #include using namespace std; /* 1. n과 k를 입력받는다. 2. n의 약수들을 구한다..
풀이 문자열은 string으로 입력받는다. string형 벡터 v를 선언해주고, 앞자리가 하나씩 없어지면서 생성될 문자열을 넣을 string형 tmp을 생성한다. for문으로 i를 0부터 s.length()까지 돌리면서 s.substr(i, s.length()); 로 새로운 문자열을 생성해 tmp에 넣어준다. substr의 첫번째인자는 시작지점이며, 두번째인자는 길이이다. (i가 시작지점부터 문자열의 끝까지 돌아간다.) 이 tmp는 벡터에 차곡차곡 넣어준다. 벡터 내부에는 새로 생성된 문자열이 들어가있으므로, sort정렬을 이용해서 사전순으로 정렬해준다. (sort의 기본정렬은 오름차순이며, 문자열을 대상으로 했을때는 사전순으로 기본정렬된다.) 마지막으로 for문으로 벡터를 출력해준다. length() ..
풀이 몸무게와 키 값 2개를 받아야하는 문제이다. vector 를 이용하면 쉽게 풀 수 있다. vector v; 를 선언하고 for문을 이용해 n개의 몸무게와 키값을 받는다. v.push_back(pair>(x,y)); 이때 몸무게와 키 값이 모두 다 커야므로 승리하므로 이중포문을 이용해 first요소(몸무게)와 second요소(키)를 모두 비교해서 큰 경우만 count값을 증가시켜준다. (count값의 초기값은 1로 해주고, 이기는 경우만 count가 증가된다) //3 //몸무게와 키가 모두 커야 승리 for (int i = 0; i < n; i++) { int count = 1; for (int j = 0; j < n; j++) { if (v[i].first < v[j].first && v[i].se..