![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/b7SCxk/btqFxz3yq1g/NqDIy5YgKh5oCRJ91LVwv1/img.png)
https://www.acmicpc.net/problem/14889 14889번: 스타트와 링크 예제 2의 경우에 (1, 3, 6), (2, 4, 5)로 팀을 나누면 되고, 예제 3의 경우에는 (1, 2, 4, 5), (3, 6, 7, 8)로 팀을 나누면 된다. www.acmicpc.net 백트래킹 C++ 삼성 SW 역량 테스트 기출 문제 2 접근방법 팀선정에 N과 M(2)에서 사용했던 코드 재사용했다.(조합) 근데 보수관계의 조합은 필요없어서 첫번째로 들어오는 수가 0인 조합만 조사했다. ischeck배열로 1이면 스타트팀, 0이면 링크팀에 넣고 또 스타트팀의 능력치 합산 점수, 링크팀의 능력치 합산 점수를 구한다. 그리고 이들의 차이는 gap변수(전역변수)에 저장하면서 최솟값을 갱신한다. f함수 끝낸..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/lv26m/btqFtJlaoMi/SLQvQZMXgCKuEkqn1PaWMk/img.png)
https://www.acmicpc.net/problem/15652 15652번: N과 M (4) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 백트래킹 C++ 4는 2와 3을 합친 문제이다. 수열 내의 중복을 허용하고, 오름차순이다 2에서 사용했던 if문을 사용하고, 중복을 허용하기 때문에 반복여부를 체크하는 ischeck배열도 사용하지 않는다. 다만 중복을 허용하는 오름차순이기 때문에 for문 제어변수 i의 초기값을 result배열의 가장 최근 값부터 N까지로 한다.(=) 소스코드 // // 15652.cpp // back track..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cgR8O2/btqFvvTsFaM/HOD7O9GQykoIYTgkspPNw0/img.png)
https://www.acmicpc.net/problem/15651 15651번: N과 M (3) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 백트래킹 C++ 이게 순열이네 1은 순열은 아니다. 수열 내의 중복이 허용되지 않았다 이 코드가 제일 간단했다. 그냥 반복문돌면서 result에 넣어서 출력하면 끝 // // 15651.cpp // back tracking // // Created by 임수정 on 2020/07/08. // Copyright © 2020 임수정. All rights reserved. // #include usi..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cpLgFl/btqFrVs11Gg/X1NcuRwKbk1v8XEUtnkxJK/img.png)
https://www.acmicpc.net/problem/15650 15650번: N과 M (2) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 백트래킹 c++ N과 M(1) 문제의 연장선이다. 1은 순열이었고 2는 오름차순이라는 조건을 줘서 조합이다. 그래서 반복문을 0부터 N-1까지가 아니라 result 배열의 가장 최근의 수 부터 N-1까지 반복한다. (실제로 입력하는 수는 배열의 가장 최근의 수 보다 크고, N보다 작거나 같은 수이다. ) 이때 cnt가 0인 경우는 따로 처리해준다. result[-1]ㄸㅐ문 더 좋은 방법이 있을 ..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/k33fA/btqFrVsdGoE/DUBH96w4d25GMV9k2udYXk/img.png)
https://www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 백트래킹 c++ 백트래킹 -> 순열 ischeck배열 써서 방문했는지 저장하고 인덱스는 cnt로 제어 f함수 재귀 cnt가 M까지 가면 재귀 종료 소스코드 // // main.cpp // back tracking // // Created by 임수정 on 2020/07/07. // Copyright © 2020 임수정. All rights reserved. // #include using nam..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/b7yUxa/btqFoRD1ia4/4zdm3csDLAiS4K9gSiAKlk/img.png)
https://www.acmicpc.net/problem/1541 1541번: 잃어버린 괄호 첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 www.acmicpc.net [그리디 알고리즘] Python 문자열 처리를 쉽게 하고자 파이썬으로 풀어봤다 (백준 문제로는 거의 처음 파이썬으로 푼 듯) 접근방법은 식에서 -인 부분만 빼고 괄호로 묶으면 됨 50-(45+90)-(30+40) 이런식으로 split 사용해서 -기호 기준으로 분할하고 그 내부는 모두 덧셈일테니까 더하기 계산하고 하나씩 빼가면 된다. 근데 맨 처음 오는 숫자 다루려다가 코드가 정말 지저분해졌다..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/kBsTY/btqCKfNAHzU/WyC8lkx5VOjNkGfowOKg70/img.png)
https://www.acmicpc.net/problem/1181 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1≤N≤20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net [정렬] Java 오랜만에 자바로 푸니까 다 까먹음 진짜 반성하면서 앞으로 자바로 풀겠습니다.. 문제가 딱 생긴게 자바로 풀면 딱이라 시도해봤는데 그건 맞는데 암튼 1. 길이로 정렬 -> Collections.sort사용 comparator써서 a.length()-b.length() 반환 2. 길이가 같으면 사전순으로 정렬 -> Collections.sort comparator에서 a.comp..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/rcRQw/btqCKBbwSyg/5TpLFFbWoxwvpZDe2rIQnK/img.png)
https://www.acmicpc.net/problem/11650 11650번: 좌표 정렬하기 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. www.acmicpc.net [정렬] C++ 처음엔 선택정렬로 x좌표 기준 정렬하고 y좌표 기준 따로 정렬했는데 시간초과 나서 pair 사용하는 코드로 제출했더니 맞음. 덕분에 pair 사용.. 헤더는 pair pair_name; //한쌍만 쓸때 사용 pair pair_name[size]; //배열로도 가능 관련 함수 make_pair(변수, 변수); //두 변수를 하나의..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/c0puxx/btqCLeNujaL/ulKirTmNe1qPK0nK4KEYYK/img.png)
https://www.acmicpc.net/problem/1427 1427번: 소트인사이드 첫째 줄에 정렬하고자하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다. www.acmicpc.net [정렬] 자리수 다 배열에 넣어서 배열 정렬후(오름차순) 배열 거꾸로 출력. 끝 소스코드 #include #include using namespace std; int digits[10]; int main(){ int n; cin >>n; int i = 0; while(n != 0){ digits[i++] = n % 10; n /= 10; } sort(digits, digits+i); for(int j = i-1 ; j >= 0 ; j--) cout
- Total
- Today
- Yesterday
- 파이썬
- 동적계획법
- 그리디알고리즘
- dfs
- BFS
- 프로그래머스
- c++
- Stack
- 백준
- 최단경로
- 스택
- 정렬
- 수학
- 우선순위큐
- 투포인터
- 웹크롤링
- 최대힙
- 게임이론
- 자바
- 이분탐색
- 토마토
- dp
- 최소힙
- 백트래킹
- Swift
- 트리
- 브루트포스
- 다이나믹프로그래밍
- 문자열
- 알고리즘
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |