반응형

전체 글 126

[백준 1654번/C언어] 랜선 자르기, 이진탐색으로 풀이

백준 1654번 문제를 이진탐색(Binary Search)으로 풀어보았습니다. 백준 1654번: https://www.acmicpc.net/problem/1654 1654번: 랜선 자르기 첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그 www.acmicpc.net 문제 내용은 아래와 같습니다. 이 문제는 작동하게만 하려는 목표라면 굳이 이진탐색을 사용하지 않아도 되지만, 이진탐색을 사용하지 않으면 시간초과가 발생하기 때문에 효율을 위해서 이진탐색을 써야 하는 문제입니다. 사실 이진탐색만 알면 나머지 구조 자체는 크게 어려울 것이 없는..

[백준 9012번/C언어] 괄호 풀이

백준 9012번 문제를 풀어보았습니다. 백준 9012번: https://www.acmicpc.net/problem/9012 9012번: 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 www.acmicpc.net 문제 내용은 아래와 같습니다. 예전에 유사한 문제를 아주 어렵게 풀었던 기억이 있는데, 이번에는 보다 쉽게 푼 것 같아서 뿌듯했습니다. 문제 자체가 복잡한 알고리즘을 사용해야 하는 게 아닌데 지난번엔 왜 그렇게 어렵게 풀었나 싶지만 발전했다는 것에 만족하기로 했습니다. 아마 지난번에는 stack과 queue 개..

[Hive Helsinki / Piscine] Rush00

Rush00은 주어진 패턴 모양대로, 인자로 받은 크기의 직사각형을 출력하는 문제이다. 결론부터 말하자면 나는 42%로 fail했다. 원인은 음수나 0이 크기로 주어졌을 때, 아무것도 출려해서는 안되지만 new line을 출력하는 오류를 범했기 때문이다. 코드는 수정된 코드로 기재할 것이나. 러시를 통과한 코드는 아니니 참고 시에 유의 바란다. 우선 해당 rush 과제는 총 3개의 파일을 요구하는데, main 함수를 포함하는 main.c 파일, ft_putchar 함수를 포함하는 ft_putchar.c 파일 그리고 우리가 주요하게 작성해야 하는 파일인 rush0X.c 파일이다. rush0X.c 파일에 작성된 코드에 앞서 이미 문제에 주어진 main.c와 (평균적인 속도라면) 이미 앞선 C프로젝트에서 만들..

[Hive Helsinki / Piscine] C04

Exercise 00: ft_strlen Create a function that counts and returns the number of characters in a string. Allowed Function: None C04에서도 C02, C03와 비슷한, string을 기반으로 한 문제들을 대체로 볼 수 있다. 이 문제는 reproduce를 요구하지는 않았지만, 헤더 내 존재하는 strlen() 함수와 비슷한 역할을 하는 함수를 만들기를 요구한다. strlen은 문제에서 설명하소 있는 대로 인자로 주어진 문자열의 길이를 구하는 것이다. 즉 null character 전까지의 길이를 리턴하는 함수를 만들면 된다. 따라서 길이를 파악하기 위한 len 변수를 하나 만들어 초기값을 0으로 주고 하나씩 ..

[Hive Helsinki / Piscine] C03

Exercise 00: ft_strcmp Reproduce the behavior of the function strcmp (man strcmp). Allowed Function: None C03의 경우 C02에서와 비슷하게 string에 관한 내용이 이어진다. 첫 번째 문제부터 C02와 유사하게 string에 관한 함수를 구현하는 문제가 나왔다. strcmp라는 함수는 string compare을 수행하는 함수이다. 자세한 내용은 함수의 매뉴얼을 통해 확인할 수 있는데, 다음과 같다. 위 매뉴얼과 같이 string 두 개를 인자로 받아, 두 개를 비교하고 같으면 0을 다르면 음수나 양수를 리턴한다. 음수/양수를 판단하는 기준은 string이 다른 그 지점에서 어떤 문자의 아스키코드가 더 작냐로 판단하게..

[Hive Helsinki / Piscine] C02

Exercise 00: ft_strcpy Reproduce the behavior of the function strcpy (man strcpy). Allowed Function: None C02에는 전반적으로 string 관련해서 이미 있는 c언어 함수를 다시 만드는 문제가 많이 나왔다. 이 문제는 dest으로 받은 string 공간에 src 문자열을 복사해 넣는 string copy 함수를 만드는 것이다. 문제에 명시되어 있는 대로, 터미널에 man strcpy라고 입력하면 strcpy 함수의 manual을 확인할 수 있다. 프로토타입은 문제에 명시되어 있으므로, 해당 매뉴얼에서 내가 중요하게 봤던 부분은 Description과 사진에는 나와있지 않지만 return value 부분이다. Descrip..

[JAVA / 비트 논리 연산자] 비트 논리 연산자의 필요성 증명 과정 이해하기

자바 기초 공부를 하던 중 정확한 이해를 위해 직접 손으로 써 본 부분에 대한 기록이다. C언어에는 unint8_t 타입이 있는데, 이 타입은 1byte 크기를 가지면서 0~255 값의 범위를 가진다. C 프로그램이 uint8_t 타입 136을 2진수로 보내면 자바는 2진수를 -120으로 읽게 된다. 그 이유는 자바는 최상위 비트가 1이면 음수로 인식하기 때문이다. -120을 복원하고 싶다면 -120과 255를 비트 논리곱(&) 연산을 수행하면 된다. 신용권, 임경균, 『이것이 자바다 』, 한빛미디어(2023), p120-121. 위 인용 파트가 잘 이해되지 않아서 직접 136과 -120을 2진수로, 그리고 다시 10진수로 변환해 보며 이해하려고 했다. 첫 번째로 136을 2진수로 변환하면 다음과 같이 ..

[Linked List] 학생 정보 Linked List 구현

LINKED LIST란? Linked List를 구현하기 전 간단히 Linked List가 무엇인지에 대해서 짚고 넘어가겠습니다. Linked List는 메모리에 흩어진 각각의 node들이 연결되어 구성되는 List를 말합니다. 메모리 내에서부터 연결된 기본적인 List와는 다르게 흩어져있는 정보들을 특정한 방법으로 연결 지어 리스트화해 주어야 비로소 Linked List가 완성됩니다. 일반적인 List로 "hey" 저장: char word[4] = "hey"; (Memory Address) 1000 1001 1002 1003 (Data) 'h' 'e' 'y' '\0' Linked List로 "hey" 저장 Linked List는 List와 비교했을 때 아래와 같이 각각 장단이 있습니다. 따라서 상황에 ..

[Hive Helsinki / Piscine] C01

Exercise 00: ft_ft Create a function that takes a pointer to int as a parameter, and sets the value "42" to that int. Allowed Function: None 해당 문제는 포인터의 아주 기본적인 이해를 묻는 문제이다. 코드도, 해답도 너무 간단해서 오히려 이게 정말 맞는 거냐는 질문을 3일 동안 다양한 사람들에게 받았던 것 같다. 포인터는 변수 선언 후에 * 표시 없이 사용하면 주소값을 reassign 하는 것이고, * 표시와 함께 사용하면, 해당 메모리 주소에 저장된 value 값을 바꾸겠다는 뜻이다. 따라서 아래와 같이 간단한 코드로 nbr 포인터에 저장된 value 값을 42로 변경할 수 있다. voidft..

[Hive Helsinki / Piscine] C00

Exercise 00: ft_putchar Write a function that displays the character passed as a parameter Allowed Function: write 해당 문제는 기존에 헤더에 존재하는 putchar 함수와 동일한 기능을 하는 함수를 작성하는 것이 목표이다. 사실상 인자로 받은 character type의 변수를 write 함수를 이용하여 출력해주기만 하면 되는 간단한 문제이다. 하지만 여기서 중요하게 알아야 할 것이 바로 write 함수를 어떻게 사용하느냐 이다. 나는 이전에 c언어로 코딩하면서 주로 printf함수를 사용해 왔기 때문에 write 함수에는 익숙하지 않았다. 그래서 write 함수에 대해서 먼저 공부하였다. (write 함수는 wi..

728x90
반응형