목록Algorithm (428)
Mini

https://www.acmicpc.net/problem/1406 1406번: 에디터 첫째 줄에는 초기에 편집기에 입력되어 있는 문자열이 주어진다. 이 문자열은 길이가 N이고, 영어 소문자로만 이루어져 있으며, 길이는 100,000을 넘지 않는다. 둘째 줄에는 입력할 명령어의 개수 www.acmicpc.net * 연결리스트 장점 : 삽입이 O(1) 이다. 단점 : 조회가 O(N)이다. 사용처 : 메모장 구현 등 삽입,삭제가 빈번할 때 코테키워드 : 메모장, 커서 *메소드 L.insert(idx,값) // 삽입한놈 idx 반환 L.erase(idx) // 삭제한 다음놈 idx 반환 L.end() // 마지막원소 다음 idx 반환 #include using namespace std; string s; int..

https://www.acmicpc.net/problem/3273 3273번: 두 수의 합n개의 서로 다른 양의 정수 a1, a2, ..., an으로 이루어진 수열이 있다. ai의 값은 1보다 크거나 같고, 1000000보다 작거나 같은 자연수이다. 자연수 x가 주어졌을 때, ai + aj = x (1 ≤ i www.acmicpc.net* 기본개념1. 목표가 100이고, 20이 현재값이면 visited[80]이 true -> 정답이 가능하다. * 에러out of bounds 원인 : visitied[x-v[i]]해결 : x가 최대 20만 이므로 visited도 20만으로 선언#include using namespace std;int n, x, visited[2000004], ret;vector v;int..
https://www.acmicpc.net/problem/1475 1475번: 방 번호 첫째 줄에 다솜이의 방 번호 N이 주어진다. N은 1,000,000보다 작거나 같은 자연수이다. www.acmicpc.net * 문풀 1. v[6] == 필요한 6의갯수 // 필요한갯수 기준으로 생각하라. 2. 단, 6은 9로 대체가능 ex) 669 의 필요한 세트수 : 2 == (v[6]+v[9])/2를 올림한 값 == (v[6]+v[9]+1)/2 3. 정답 : max(v[0-9] , (v[6]+v[9]+1)/2 )) #include using namespace std; int v[10]; string s; int ret; void print_v() { for (int i = 0; i < 10; ++i) { cout..
* 기존 : 2중for 문 : O(N^2) * visit배열이용 : O(N) ex) 77 이면 이전에 23이 나왔었는지만 확인하면됨. 반복문 돌면서 visit에 기록 #include using namespace std; int v[100]; int func1(int N) { return -1; } int func2(int arr[], int N) { for (int i = 0; i < N; ++i) { if (v[100-arr[i]]) { return 1; } else { v[arr[i]] = 1; } } return 0; } int func3(int N) { return -1; } int func4(int N) { return -1; } void test1() { cout
#include using namespace std; void insert(int idx, int num, int arr[], int& len) { //arr[idx]에 원소추가 // 10 20 30 // [0] 1 2 // len=3 //뒤로밀기 //뒤부터 덮어쓰기하면 temp필요없음 //[i]=[i-1] for (int i = len; i > idx; i--) { arr[i] = arr[i - 1]; } arr[idx] = num; len++; } void erase(int idx, int arr[], int& len) { //arr[idx]의 원소를 지워라 //1.[idx]=[idx+1] for (int i = idx; i < len; ++i) { arr[i] = arr[i + 1]; } len--..
https://school.programmers.co.kr/learn/courses/30/lessons/118667 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr * 문제해결과정 1. 관찰 2. 항상 큐의합이 많은곳에서 적은곳으로 옮겨야한다. 3. 옮기다보면 언젠가는 정답이되고 , 그때의 정답의 최적해이지 않을까? (그리디) 4. 단, 불가능한경우의 종료조건을 찾아야한다. 종료조건 : 총 pop을 4*n(큐의크기)번만큼 햇는데도 못찾은경우 [1,2,3,4] 에서 pop 을 4번-> [ 빈 칸 ] 다시 pop되서 옴 -> [1,2,3,4] (8번) -> 1..
https://school.programmers.co.kr/learn/courses/30/lessons/12932 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr *Long.toString Long.toString(값) String s=Long.toString(n); ※ 자바 : String S가 대문자임에 주의. * str to int Integer.parseInt(문자열) String str = "25"; try{ int number = Integer.parseInt(str); System.out.println(number); // output = 25..
https://school.programmers.co.kr/learn/courses/30/lessons/118666 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr * HashMap m.getOrDefault(key,기본값) key에 해당하는 값이있다면 값반환, 없으면 기본값반환. *맵출력방법 m.forEach //맵 출력방법 m.forEach((key, value) -> { System.out.println(key + " : " + value); }); * 의사코드 1. 반복문돌면서 경우의수에 따라 map[Key]에 점수카운팅 2. 카운팅에 따라 점수가 ..