
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..

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..

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]ㄸㅐ문 더 좋은 방법이 있을 ..

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..

https://www.acmicpc.net/problem/1541 1541번: 잃어버린 괄호 첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 www.acmicpc.net [그리디 알고리즘] Python 문자열 처리를 쉽게 하고자 파이썬으로 풀어봤다 (백준 문제로는 거의 처음 파이썬으로 푼 듯) 접근방법은 식에서 -인 부분만 빼고 괄호로 묶으면 됨 50-(45+90)-(30+40) 이런식으로 split 사용해서 -기호 기준으로 분할하고 그 내부는 모두 덧셈일테니까 더하기 계산하고 하나씩 빼가면 된다. 근데 맨 처음 오는 숫자 다루려다가 코드가 정말 지저분해졌다..

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..

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(변수, 변수); //두 변수를 하나의..

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
- 파이썬
- c++
- 브루트포스
- 자바
- 스택
- 가장 큰 수 Swift
- dp
- 토마토
- 백트래킹
- 가장 큰 수 프로그래머스
- 수학
- BFS
- dfs
- 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 |
31 |