반응형
n = int(input())

answer= 0 
array = [[0 for col in range(n+2)] for row in range(n+2)]

array[0] = [-1 for col in range(n+1)]
array[-1] = [-1 for col in range(n+1)]
for cols in array:
  cols[0] = -1
  cols[-1] = -1

rules = []
rules2 = {}
for i in range(n**2):
  rules.append(list(map(int,input().split())))
  rules2[rules[-1][0]] = rules[-1][1:]

for order in rules:
  student_num = order[0]
  temp_max = 0 
  temp_list= []
  for j in range(1,n+1):
    for k in range(1,n+1):
      if array[j][k] != 0:
        continue
      temp = 0
      if array[j+1][k] in order:
        temp +=1
      if array[j][k+1] in order:
        temp +=1
      if array[j-1][k] in order:
        temp +=1
      if array[j][k-1] in order:
        temp +=1

      if temp == temp_max:
        temp_list.append((j,k))
      if temp > temp_max:
        temp_max = temp
        temp_list=[(j,k)]


  #1번규칙
  # print(order)

  if len(temp_list) == 1:
    j,k = temp_list[0]
    array[j][k] = student_num
    # print(array)
    continue
  
  #2번 규칙
  temp_max2 = 0 
  temp_list2 = []

  for temp_locate in temp_list:
    j2,k2 = temp_locate
    temp2 = 0
    if array[j2+1][k2] ==0:
      temp2 +=1
    if array[j2][k2+1] ==0:
      temp2 +=1
    if array[j2-1][k2] ==0:
      temp2 +=1
    if array[j2][k2-1] ==0:
      temp2 +=1
    
    if temp2 == temp_max2:
      temp_list2.append((j2,k2))
    if temp2 > temp_max2:
      temp_max2 = temp2
      temp_list2=[(j2,k2)]

  if len(temp_list2) == 1:
    j3,k3 = temp_list2[0]
    array[j3][k3] = student_num
    # print(array)
    continue
  temp_list2.sort()
  j3,k3 = temp_list2[0]
  array[j3][k3] = student_num
  
for j4 in range(1,n+1):
  for k4 in range(1,n+1):
    target = array[j4][k4]
    temp3 = 0
    if array[j4+1][k4] in rules2[target]:
      temp3 +=1
    if array[j4][k4+1] in rules2[target]:
      temp3 +=1
    if array[j4-1][k4] in rules2[target]:
      temp3 +=1
    if array[j4][k4-1] in rules2[target]:
      temp3 +=1
    
    if temp3 ==1:
      answer +=1
    if temp3 ==2:
      answer += 10
    if temp3 ==3:
      answer += 100
    if temp3 ==4:
      answer += 1000

print(answer)

https://www.acmicpc.net/problem/21608

반응형

'computer 지식 > 알고리즘 정복기' 카테고리의 다른 글

1244 스위치 켜고 끄기 백준 파이썬  (0) 2021.10.13
백준 1212 파이썬  (0) 2021.10.11
백준 2753번 파이썬  (0) 2021.10.11
백준 2501번  (0) 2021.10.10
이 카테고리에 관하여  (0) 2021.10.10
반응형
n,k = map(int,input().split())
temp = []
for i in range(1,n+1):
  if n%i ==0:
    temp.append(i)
  
if len(temp) >= k:
  print(temp[k-1])
else:
  print(0)

https://jaejin89.tistory.com/56

 

백준 2501. 약수 구하기 :: 돼지개발자

출저 : https://www.acmicpc.net/problem/2501 "구현" 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 import java.util.Scanner; public class Main {     static int N,K;     st..

jaejin89.tistory.com

 

https://inuplace.tistory.com/459

 

[알고리즘 연습] 약수 구하기 효율화 (by Python)

약수 효율적으로 구하기 1 이상의 자연수 n을 받았을 때 해당 수의 약수들을 구하라. 약수들은 리스트 형태로 숫자 크기 순서대로 출력하라. 단순 풀이 def get_divisor(n): n = int(n) divisors = [] for i in ra

inuplace.tistory.com

 

반응형
반응형

https://covenant.tistory.com/234

 

코딩테스트 시작을 위한 백준 문제 추천

코딩테스트 시작을위한 백준문제 추천 Source. Pixabay Philipp Kleindienst 시작하며 본 글은 코딩테스트를 시작하는 분들을 위한 글입니다. 올해 초 코딩테스트 대비를 위한 백준 문제 추천글을 작성하

covenant.tistory.com

 

1. 여기서 하라는대로 한다.

2. 파이썬 한번, 자바 한번 푼다.

 

 

반응형

'computer 지식 > 알고리즘 정복기' 카테고리의 다른 글

1244 스위치 켜고 끄기 백준 파이썬  (0) 2021.10.13
백준 1212 파이썬  (0) 2021.10.11
백준 2753번 파이썬  (0) 2021.10.11
백준 상어초등학교 21608 파이썬  (0) 2021.10.11
백준 2501번  (0) 2021.10.10
반응형

노동의 진짜 의미는 자기가 맡은 일을 달성하고 실적을 내는 것뿐만 아니라 개인의 내면을 완성하는 과정이라고 생각합니다.

 

자신의 눈앞에 옪인 일에 온 힘을 다해 몰두한다면 우리는 내면을 갈고닦아 깊고 두터운 인격을 갖출 수 있다.

 

 

--> 사실 코드에도 그 사람의 인격이 담기지 않을까?

 

자아실현과 인격 형성을 이루는 정진의 과정.

반응형
반응형

소프트웨어 장인정신 매니페스토

 

소프트웨어 장인을 열망하는 우리는, 스스로의 기술을 연마하고, 다른 사람들이 기술을 배울수 있도록 도움으로서 프로페셔널 소프트웨어 개발의 수준을 높인다. 이러한 일을 하는 과정에서 우리는 다음과 같은 가치들을 추구한다.

 

  • 동작하는 소프트웨어뿐만 아니라 정교하고 솜씨 있게 만들어진 작품을.
  • 변화에 대응하는 것뿐만 아니라, 계속해서 가치 더하는것을.
  • 개별적으로 협력 하는 것뿐아니라, 프로페셔널 커뮤니티를 조성하는 것을.
  • 고객과 협업하는 것뿐만 아니라, 생상적인 동반자 관계를

이메니페스토의 핵심은 부제 ,'프로페셔널 소프트웨어 개발의 수준을 높인다'에 있다.

경험이 많고 재능있는 개발자들이 겪는 어려움, 추구하는 가치, 열망을 담고 있다.

 

부실한 관리,잘못 정의된 절차, 그리고 형편없는 코드 때문에 프로젝트가 실패하는 일은 없어야 한다.

 

-소프트웨어 장인 정신 e북 기준 69 pg.-

 

 

 

단상

결국 개발자는 소프트웨어 장인정신을 지녀야하는 것 같다.

완성도가 99%인 코드를 짰다고 하자.

이러한 99% 완성도의 코드 블록이 20개만 모여도,(각 코드블럭은 독립적이라고 가정)

전체는 0.99*20인 대략 81% 완성도의 코드 모음이 탄생한다.

 

즉, 약간의 타협이 모이면 큰 구멍이 되어서 돌아온다.

견고한 코드를 짜기 위해서 타협하지 않도록... 인격 수양, 마음 수양을 하도록하자. 

 




반응형

'회고 > 단상' 카테고리의 다른 글

커뮤니케이션 원칙  (0) 2021.12.04
협업에 관한 소고  (0) 2021.11.17
반응형

1.  사실

1) Spring security를 쓰는법

2)해시함수의 암호학적 근거

3)Servelet과 체인 등, Spring security의 작동원리

 

2. 주관 및 배운점

1) 어려웠다.

spring security를 처음 배우는데 어려워서 어떻게 해야하는지 걱정이 됐느데, 다른 분들 git push들을 보아도 다들 어려웠다는 이야기였다.

 

2)완벽한 이해보다는, 활용을 통한 체득, 체득에 따른 원리의 호기심. 

 

3)4주동안 실습하면서 배웠던거 능동적으로 써보면 더욱 잘 이해될 것이다.

 

 

3. 확언

restdocs 잘 학습하자!

마지막 학습주 마무리 잘하기

반응형

'회고 > 주간회고' 카테고리의 다른 글

8주차 회고  (0) 2021.10.11
6주차 회고  (0) 2021.09.19
코드숨 5주차 회고  (0) 2021.09.12
코드숨 4주차 회고  (0) 2021.09.05
코드숨 3주차 회고  (0) 2021.08.29
반응형

발단

왜 프로세스와 스레드를 배우는지는 알겠다. 한정된 리소스를 효율적으로 관리하고, 최상의 아웃풋을 내기 위해서이다.

그런데 ENIAC 시절부터 프로세스와 쓰레드가 있었을까?

그건 아닐 것이다. 그러면 어떠한 이슈때문에 프로세스 쓰레드가 탄생하게 됐을까?

 

전개

사실 처음 공부한 자료에서는 이에 대해 잘 안나와있었는데, 공룡책을 참고하다보니 이에 대해 나와있었다.

 

프로세스 탄생 배경

 초기의 컴퓨터 시스템은 한번에 하나의 프로그램만을 실행하도록 허용했다. 따라서 프로그램이 시스템을 완전히 제어하고, 모든 자원에 접근해도 됐다. 그런데 메모리에 다수의 프로그램이 적재되어 병행실행되는 것이 허용되면서 다양한 프로그램을 보다 견고하게 제어하고 구획화할 필요가 생기면서 프로세스라는 개념이 탄생하게 되었다.
-운영체제 Abraham Silberschatz (공룡책) 10판, 117pg

 

 

쓰레드 탄생 배경

하나의 응용프로그램이 여러개의 비슷한 작업을 수행할 필요가 있는 상황들이 존재한다. 이때 각각의 프로세스를 생성하고 컨텍스트 스위칭을 한다면, 많은 오버헤드를 감수해야한다.

따라서 스택만 따로 할당받고, 코드,데이터, 힙영역은 공유하는 쓰레드가 탄생하게 되었다.

반응형
반응형

https://seoyeonhwng.medium.com/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EB%A6%AC%EC%8A%A4%ED%8A%B8-%EB%82%B4%EB%B6%80-%EA%B5%AC%EC%A1%B0-f04847b58286

 

파이썬 리스트 내부 구조

C언어의 배열과 파이썬의 리스트는 같은 자료형이지만 파이썬의 리스트가 훨씬 사용하기 편리하다. 그 이유는 아래와 같다.

seoyeonhwng.medium.com

 

파이썬 리스트를 구현해본 것을 까보면, 이중pointer로 되어있어서 그렇다.

쉡게 말하면 파이썬의 리스트는 원소의 주소값을 저장한다.

반응형

'computer 지식 > 파이썬' 카테고리의 다른 글

django 4.0 release!  (0) 2021.12.08

+ Recent posts